Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Топ:
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2020-05-08 | 432 |
5.00
из
|
Заказать работу |
|
|
Перечень этих функций приведен на рис. 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, то следует сделать копию исходной строки.
|
|
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!