netlib.narod.ru | < Назад | Оглавление | Далее > |
Имеются две группы функций, оперирующих со строками. Они определены в заголовочном файле <string.h>. Имена функций первой группы начинаются с букв str, второй — с mem. Если копирование имеет дело с объектами, перекрывающимися по памяти, то, за исключением memmove, поведение функций не определено. Функции сравнения рассматривают аргументы как массивы элементов типа unsigned char.
В приведенной ниже таблице переменные s и t принадлежат типу char *, cs и ct — типу const char *, n — типу size_t, а c — значение типа int, приведенное к типу char.
char *strcpy(s,ct) | копирует строку ct в строку s, включая '\0'; возвращает s |
char *strncpy(s,ct,n) | копирует не более n символов строки ct в s; возвращает s. Дополняет результат символами '\0', если символов в ct меньше n |
char *strcat(s,ct) | приписывает ct к s; возвращает s |
char *strncat(s,ct,n) | приписывает не более n символов ct к s, завершая s символом '\0'; возвращает s |
int strcmp(cs,st) | сравнивает cs и ct; возвращает отрицательное число, если cs<ct; 0, если cs==ct; и положительное число больше нуля, если cs>ct1 |
int strncmp(cs,ct,n) | сравнивает не более n символов cs и ct; возвращает отрицательное число, если cs<ct, 0, если cs==ct, и положительное число, больше нуля, если cs>ct |
char *strchr(cs,c) | возвращает указатель на первое вхождение символа c в строку cs или, если такового не оказалось, NULL |
char *strrchr(cs,c) | возвращает указатель на последнее вхождение символа c в строку cs или, если такового не оказалось, NULL |
size_t strspn(cs,ct) | возвращает длину начального фрагмента cs, состоящего из символов, входящих в строку ct |
size_t strcspn(cs,ct) | возвращает длину начального фрагмента cs, не содержащего никаких символов, входящих в строку ct |
char *strpbrk(cs,ct) | возвращает указатель на первый символ в cs, который совпал с одним из символов, входящих в ct, или, если такового не оказалось, NULL |
char *strstr(cs,ct) | возвращает указатель на первое вхождение ct в cs или, если такового не оказалось, NULL |
size_t strlen(cs) | возвращает длину cs |
char *strerror(n) | возвращает указатель на зависящую от реализации строку, соответствующую номеру ошибки n |
char *strtok(s,ct) | strtok ищет в s лексему, ограниченную символами из ct; более подробное описание этой функции см. ниже |
1 Здесь и ниже под такими выражениями как cs<ct не следует понимать арифметическое сравнение указателей. Подразумевается лексикографическое сравнение, т.е. cs меньше (больше) ct, если первый несовпавший элемент в cs арифметически меньше (больше) соответствующего элемента из ct.
Последовательные вызовы strtok разбивают строку s на лексемы. Ограничителем лексемы служит любой символ из строки ct. В первом вызове указатель s не равен NULL. Функция находит в строке s первую лексему, состоящую из символов, не входящих в ct; ее работа заканчивается тем, что поверх следующего символа пишется '\0' и возвращается указатель на лексему. Каждый последующий вызов, в котором указатель s равен NULL, возвращает указатель на следующую лексему, которую функция будет искать сразу за концом предыдущей. Функция strtok возвращает NULL, если далее никакой лексемы не обнаружено. Параметр ct от вызова к вызову может варьироваться.
Функции mem... предназначены для манипулирования с объектами как с массивами символов; их назначение — получить интерфейсы к эффективным программам. В приведенной ниже таблице s и t принадлежат типу void *; cs и ct — типу const void *; n — типу size_t; а c имеет значение типа int, приведенное к типу char.
void *memcpy(s, ct, n) | копирует n символов из ct в s и возвращает s |
void *memmove(s, ct, n) | делает то же самое, что и memcpy, но работает и в случае «перекрывающихся» объектов. |
int memcmp(cs, ct, n) | сравнивает первые n символов cs и ct; выдает тот же результат, что и функция strcmp |
void *memchr(cs, c, n) | возвращает указатель на первое вхождение символа c в cs или, если среди первых n символов c не встретилось, NULL |
void *memset(s, c, n) | размещает символ c в первых n позициях строки s и возвращает s |
netlib.narod.ru | < Назад | Оглавление | Далее > |