Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 329; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.6.9 (0.006 с.) |