Функции поиска из библиотеки обработки строк — КиберПедия 

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Функции поиска из библиотеки обработки строк

2020-05-08 431
Функции поиска из библиотеки обработки строк 0.00 из 5.00 0 оценок
Заказать работу

Перечень этих функций приведен на рис. 22. Обратите внимание, что функции strcspn и strspn возвращают тип size_t. Тип size_t определяется как целочисленный тип, возвращаемый операцией sizeof.

 

Прототип Описание функции
char *strchr    (const char *s, int с)
  Находит позицию первого вхождения символа с в строку s. Если с найден, функция возвращает указатель на с в строке s. В противном случае возвращается указатель со значением NULL.

size t strcspn (const char *s1, const char *s2)

  Определяет и возвращает длину начального сегмента строки s1, содержащего только те символы, которые не входят в строку s2.

size t strspn (const char *s1, const char *s2)

  Определяет и возвращает длину начального сегмента строки s1, содержащего только те символы, которые входят в строку s2

char *strprbk (const char *s1, const char *s2)

  Находит в строке s1 позицию первого вхождения любого из симвлов строки s2. Если символ из строки s2 найден, функция возвращает указатель на этот символ в строке s1. В противном случае возвращается указатель со значением NULL.

char *strrchr (const char *s, int c)

  Находит позицию последнего вхождения символа с в строку s. и возвращает указатель на с в строке s. В противном случае возвращается указатель со значением NULL.

char *srrstr (const char *s1, const char *s2)

  Находит позицию первого вхождения строки s2 в строку s1. Если подстрока найдена, возвращает указатель подстроки в строке s1. В противном случае возвращается указатель со значением NULL.

char *strtok (char *s1, const char  *s2)

  Последовательный вызов функции выполняет разбиение строки s1 на лексемы, разделенные символами, содержащимися в строке s2. При первом вызове функция получает в качестве аргумента строку s1, а в последующих вызовах, чтобы продолжить разбиение той же самой строки, в качестве первого аргумента передается NULL. При каждом вызове возвращается указатель на текущую лексему строки s1. Если при очередном вызове функция находит, что лексем в строке не осталось, то возвращается NULL.

Рис. 22. Функции операций со строками из библиотеки обработки строк

Программа, приведенная на рис. 23, использует strchr для поиска первого из символов 'а' и первого из символов V', входящих (или не входящих) в строку "This is a test".

/* Применение strchr */

#include <stdio.h>

#include <string.h>

main () {

char *string = " Это тест ";

char characterl = 'a', character2 = 'z';

if (strchr(string, characterl)!= NULL)

printf ("\'%c\' was found in \"%s\".\n", character1, string);

else

printf ("\'%c\ ' was not found in \"%s\".\n", characterl, string);

if (strchr (string, character2)!= NULL)

printf ("\ ' %c\ ' was found in \"%s\".\n", character2, string);

else

printf ("\'%c\ ' was not found in \"%s\".\n", character2,    string);

return 0;}

 

Вывод на экран

'a' was found in "This is a test".

'z' was not found in "This is a test".

Рис. 23. Применение strchr

Применение strcspn (рис. 24):

/* Применение strcspn */

#include <stdio.h>

#include <string.h>

main () {

char *string1l = "The value is 3.14159";

char *string2 = "1234567890";

printf ("%s%s\n%s%s\n\n%s\n%s%u", "stringl = ", stringl, "string2 = ", string2, "The length of the initial segment of stringl", "containing no characters from string2 = ", strcspn(string1, string2));

return 0; }

 

Вывод на экран

stringl = The value is 3.14159 string2 = 1234567890

The length of the initial segment of stringl containing no characters from string2 = 13

Рис. 24. Применение strcspn

 

Программа, приведенная на рис. 25, выполняет поиск в строке string1 первого по положению символа, который встречается в строке string2.

/* Применение strpbrk */

#include <stdio.h>

#include <string.h>

main () {

char *stringl = "This is a test";

char *string2 = "beware";

printf("%s\"%s\"\n'%c'%s\n\"%s\"\n", "Of the characters in ", string2, *strpbrk(stringl, string2),

" is the first character to appear in ", stringl);

return 0; }

 

Вывод на экран

Of the characters in "beware"

'a' is the first character to appear in

"This is a test"

Рис. 25. Применение strpbrk

Программа, приведенная на рис. 26, вызывает strrchr для поиска последнего из символов V', входящих в строку "A zoo has many animals including zebras".

/* Применение strrchr */

#include <stdio.h>

#include <string.h>

main (). {

char *stringl = "A zoo has many animals including zebras"; int с = 'z';

 printf ("%s\n%s,%c'%s\"%s\"\n", "The remainder of stringl beginning with the ", "last occurrence of character ", c, "is: ", strrchr (stringl, c));

return 0; }

 

Вывод на экран

The remainder of stringl beginning with the • last occurrence of character 'z' is: "zebras"

Рис. 26. Применение strrchr

Функция strspn (рис. 27) определяет длину начальной части строки в первом аргументе, которая (часть) содержит только символы строки во втором аргументе. Функция возвращает длину найденного сегмента.

 

/* Применение strspn */

# include < stdio. h >

#include <string.h>

main(){

char *stringl = "The value is 3.14159";

char *string2 = "aehilsTuv";

printf ("%s%s\n%s%s\n\n%s\n%s%u", "stringl = ", stringl, "string2 = ", string2, "The length of the initial segment of stringl", "containing only characters from string2 = ", strspn(stringl, string2));

return 0;

}

 

Вывод на экран

stringl = The value is 3.14159 string2 = aehilsTuv The length of the initial segment of stringl, <sA containing only characters from string2 = 13

Рис. 27. Применение strspn

 Программа, приведенная на рис. 28, использует strstr для поиска подстроки "def" в строке "abcdefabcdef".

/* Применение strstr */

#include <stdio.h>

#include <string.h>

main () {

char *stringl = "abcdefabcdef";

char *string2 = "def";

printf("%s%s\n%s%s\n\n%s\n%s%s\n",

"stringl = ", stringl, "string2 = ", string2, "The remainder of stringl beginning with the ", "first occurrence of string2 is: ", strstr(stringl, string2));

return 0; }

 

Вывод на экран

stringl = abcdefabcdef string2 = def

The remainder of stringl beginning with the first occurrence of string2 is: defabcdef

Рис. 28. Применение strstr

Функция strtok используется для разбиения строки на ряд лексем.

Чтобы разбить строку на несколько лексем, требуется многократный вызов функции strtok (предполагаем, что строка содержит более одной лексемы). При первом вызове функция strtok получает два аргумента: строку, которую нужно разбить на лексемы, и строку, содержащую символы, использующиеся для разбиения. В программе, приведенной на рис. 29, оператор

tokenPtr = strtok (string, " ");

присваивает tokenPtr значение указателя на первую лексему в строке string. Второй аргумент функции strtok — " " — означает, что лексемы в string отделяются пробелами. Функция strtok выполняет поиск первого символа в string, который не является разделительным символом (пробелом). С этого символа начинается первая лексема. Послеэтого функция ищет следующий разделительный символ в строке и заменяет его нулевым символом ('\0'). Этот символ завершает текущую лексему. Функция strtok запоминает значение указателя на символ, следующий сразу за найденной лексемой, и возвращает указатель на текущую лексему.

 

/* Применение strtok */

#include <stdio.h>

#include <string.h>

main () {

char string[] = "This is a sentence with 7 tokens";

char *tokenPtr;

printf("%s\n%s\n\n%s\n",

"The string to be tokenized is:", string, "The tokens are:");

tokenPtr = strtok(string, " ");

while (tokenPtr!= NULL) {

printf ("%s\n", tokenPtr);

tokenPtr = strtok(NULL, " "); }

return 0; }

Вывод на экран

The string to be tokenized is:

This is a sentence with 7 tokens

The tokens are: This is a

sentence with 7 I tokens

Рис. 29. Применение strtok

При последующих вызовах для продолжения разбиения той же строки функция strtok получает в качестве первого аргумента символ NULL. Аргумент NULL показывает, что при вызове strtok должна продолжить разбиение с того места строки string, которое было записано при последнем вызове функции. Если при очередном вызове strtok обнаруживается, что лексем уже не осталось, то функция возвращает NULL. Программа на рис. 29, использует функцию strtok для разбиения на лексемы строки "This is a sentence with 7 tokens" ("Это предложение содержит 7 лексем"). Каждая лексема печатается отдельно. strtok модифицирует входную строку и, следовательно, если строка будет использоваться в программе после обращения к функции strtok, то следует сделать копию исходной строки.


Поделиться с друзьями:

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.021 с.