Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Стандартные функции для работы со строками.Содержание книги
Поиск на нашем сайте Функции для работы со строками, прототипы которых описаны в заголовочном файле string.h. Сравнение строк. Для сравнения строк используются функции strcmp и strncmp. Функция int strcmp (const char *str1, const char *str2); лексикографически сравнивает строки str1, str2 и возвращает –1, 0 или 1, если строка str1 соответственно меньше, равна или больше строки str2. Функция int strncmp (const char *str1, const char *str2, size_t n); лексикографически сравнивает не более чем n первых символов из строк str1 и str2. Функция возвращает –1, 0 или 1, если первые n символов из строки str1 соответственно меньше, равны или больше первых n символов из строки str2. Пример. // пример сравнения строк #include <stdio.h> #include <string.h> int main() { char str1[] = "aa bb"; char str2[] = "aa aa"; char str3[] = "aa bb cc"; printf("%d\n", strcmp(str1, str3)); // печатает: -1 printf("%d\n", strcmp(str1, str1)); // печатает: -0 printf("%d\n", strcmp(str1, str2)); // печатает: 1 printf("%d\n", strncmp(str1, str3, 5)); / печатает: 0 return 1; } Копирование строк. Для копирования строк используются функции strcpy и strncpy. Функция char *strcpy (char *str1, const char *str2); копирует строку str2 в строку str1. Строка str2 копируется полностью, включая завершающий нулевой байт. Функция возвращает указатель на str1. Если строки перекрываются, то результат непредсказуем. Функция char *strncpy (char *str1, const char *str2, size_t n); копирует n символов из строки str2 в строку str1. Если строка str2 содержит меньше чем n символов, то последний нулевой байт копируется столько раз, сколько нужно для расширения строки str2 до n символов. Функция возвращает указатель на строку str1. Пример. char str1[80]; char str2 = "Copy string."; strcpy (str1, str2); printf (str1); // печатает: Copy string.
Соединение строк. Для соединения строк в одну строку используются функции strcat и strncat. Функция char* strcat (char *str1, const char *str2); присоединяет строку str2 к строке str1, причем завершающий нулевой байт строки str1 стирается. Функция возвращает указатель на строку str1. Функция char* strncat (char *str1, const char *str2, size_t n); присоединяет n символов из строки str2 к строке str1, причем завершающий нулевой байт строки str1 стирается. Функция возвращает указатель на строку str1. если длина строки str2 меньше n, то присоединяются только символы, входящие в строку str2. После соединения строк к строке str1 всегда добавляется нулевой байт. Функция возвращает указатель на строку str1. Пример. #include <stdio.h> #include <string.h> int main () { char str1[80] = "String "; char str2 = "catenation "; char str3 = "Yes No"; strcat (str1, str2); printf ("%s\n", str1); // печатает: String catenation strncat (str1, str3, 3); printf ("%s\n", str1); // печатает: String catenation Yes return 1; }
Поиск символа в строке. Для поиска символа в строке используются функции strchr, strrchr, strspn, strcspn и strpbrk. Функция char* strchr (const char *str, int c); ищет первое вхождение символа, заданного параметром c, в строку str. В случае успеха функция возвращает указатель на первый найденный символ, а в случае неудачи – NULL. Функция char* strrchr (const char *str, int c); ищет последнее вхождение символа, заданного параметром c, в строку str. В случае успеха функция возвращает указатель на последний найденный символ, а в случае неудачи – NULL. Пример. #include <stdio.h> #include <string.h> int main () { char str[80] = "Char search"; printf ("%s\n", strchr (str, 'r')); // печатает: r search printf ("%s\n", strrchr (str, 'r')); // печатает: rch return 1; } Функция size_t strspn (const char *str1, const char *str2); возвращает индекс первого символа из строки str1, который не входит в строку str2. Функция size_t strcspn (const char *str1, const char *str2); возвращает индекс первого символа из строки str1, который входит в строку str2. Пример. int main () { char str[80] = "123 abc"; printf ("n = %d\n", strspn (str, "321"); // печатает: n = 3 printf ("n = %d\n", strcspn (str, "cba"); // печатает: n = 4 return 1; } Функция char* strpbrk (const char *str1, const char *str2); находит первый символ в строке str1, который равен одному из символов в строке str2. В случае успеха функция возвращает указатель на этот символ, а в случае неудачи – NULL. Пример. char str[80] = "123 abc"; printf ("%s\n", strpbrk (str, "bca")); // печатает: abc Сравнение строк. Для сравнения строк используются функция strstr. Функция char* strstr (const char *str1, const char *str2); находит первое вхождение строки str2 (без конечного нулевого байта) в строку str1. В случае успеха функция возвращает указатель на найденную подстроку, а в случае неудачи – NULL. Если указатель str1 указывает на строку нулевой длины, то функция возвращает указатель str1. Пример. char str[80] = "123 abc 456; printf ("%s\n", strstr (str, "abc"); // печать: abc 456
Разбор строки на лексемы. Для разбора строки на лексемы используется функция strtok. Функция char* strtok (char *str1, const char *str2); возвращает указатель на следующую лексему (слово) в строке str1, в которой разделителями лексем являются символы из строки str2. В случае если лексемы закончились, то функция возвращает NULL. При первом вызове функции strtok параметр str1 должен указывать на строку, которая разбирается на лексемы, а при последующих вызовах этот параметр должен быть установлен в NULL. После нахождения лексемы функция strtok записывает после этой лексемы на место разделителя нулевой байт. Пример. #include <stdio.h> #include <string.h> int main() { char str[ ] = "12 34 ab cd"; char *p; p = strtok (str, " "); while (p) { printf ("%s\n", p); // печатает в столбик значения: 12 34 ab cd p = strtok (NULL, " "); } return 1; }
Определение длины строки. Для определения длины строки используется функция strlen. Функция size_t strlen (const char *str); возвращает длину строки, не учитывая последний нулевой байт. Например, char str[] = "123"; printf ("len = %d\n", strlen (str)); // печатает: len = 3
|
||
|
Последнее изменение этой страницы: 2021-02-07; просмотров: 506; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.005 с.) |