Анализ строковых функций

Подробное описание встроенных функций для работы со строками как массивами символов с завершающим нулём можно найти в справочной литературе ([ ], часть 2, глава 2).

Прототипы функций для работы со строками находятся в заголовочном файле string.h, а для работы с символами — в файле ctype.h.

В заголовке функции в качестве параметров в скобках могут использоваться следующие типы данных.

Параметр, описанный как char *str, означает указатель на строку. Если перед ним записано ключевое слово const, то это говорит о том, что данный параметр в функции не меняется. Например, из следующего прототипа функции копирования

char *strcpy (char *str1, const char * str2)

видно, что вторая строка после выполнения функции останется без изменения. Иногда, но не всегда, это помогает по одному заголовку функции понять назначение таких параметров. Для приведенной выше функции слово const “подсказывает” нам, что вторая строка копируется на место первой, а не наоборот.

Тип int ch используется чаще всего для объявления одного символа. Но так как типы int и char совместимы, то при вызове функции вместо такого параметра можно указывать переменную, объявленную с типом char, то есть один символ.

Для объявления целых чисел, которые, как правило, означают количество символов, используется тип size_t. Он определён в соответсвующих заголовочных файлах и является беззнаковым целым числом, то есть unsigned int. Например, в функции

char *strncpy (char *str1, const char * str2, size_t)

третий параметр определяет количество копируемых символов.

Приведём классификацию функций по типу возвращаемых параметров и по назначению.

1). Многие строковые функции имеют тип char *. Это означает, что они возвращают указатель на начало найденной или полученной строки или адрес найденного в строке символа. По назначению такие функции можно разделить на следующие группы.

Функции копирования:

char *strcpy(char* s1, const char* s2) — строку s2 копирует в s1;

char *strncpy(char* s1,const char* s2, size_t count) — копирует не более count символов из строки s2 в s1;

char *strdup(const char *s) — выделяет память для хранения копии строки, на которую указывает s, копирует эту строку в выделенную область и взвращает указатель на неё.

Функции соединения строк:

char *strcat(char* s1, const char* s2) — строку s2 присоединяет к строке s1;

char *strncat(char* s1, const char* s2, size_t count) — не более count символов из строки s2 присоединяет к строке s1.

Функции поиска:

char * strchr(const char* s, char c) — находит первое вхождение символа с в строку s. Возвращает указатель на найденный символ или NULL, если символ не обнаружен.

char * strrchr(const char* s, char c) — находит последнее вхождение символа с в строку s. Возвращает указатель на найденный символ или NULL, если символ не обнаружен.

char * strstr(const char* s, const char* substr) —ищет в s первое вхождениеподстроки substr. Возвращает указатель на первый символ найденной подстроки или NULL, если такая подстрока не найдена.

char *strpbrk(const char *s1, const char *s2) — возвращает указатель на первый символ в строке s1, совпадающий с каким-нибудь из символов строки s2. При этом нулевые сиволы в конце строк в рассмотрение не включаются.

char * strtok(const char* s1, const char* s2) — возвращает указатель на следующую лексему (часть строки) в строке s1. Символы строки s2 используются как ограничители, определяющие лексему. Как и в других функциях поиска, если лексема не найдена, возвращается NULL.

Функции преобразования строк:

char * strupr(char* s) — английские буквы нижнего регистра (“маленькие”) строки, на которую указывает s, преобразует в соответствующие буквы верхнего регистра (в “большие”). Остальные символы не меняются;

char * strlwr(char* s) — английские буквы верхнего регистра (прописные) строки, на которую указывает s, преобразует в соответствующие буквы нижнего регистра (в “маленькие”). Остальные символы не меняются.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: