- string.h
-
Стандартная библиотека
языка программирования Сstring.h — заголовочный файл стандартной библиотеки языка Си, содержащий функции для работы с нуль-терминированными строками и различными функциями работы с памятью.
Функции, объявленные в
string.h
, широко используются, так как являясь частью стандартной библиотеки, они гарантированно работают на всех платформах, поддерживающих Си. Кроме этого, строковые функции работают только с набором символов ASCII или его совместимыми расширениями, такими как ISO-8859-1; многобайтовые кодировки такие как UTF-8 будут работать, с отличием, что «длина» строки будет определяться как число байтов, а не число символов Юникода, которым они соответствуют. Несовместимые с ASCII строки обычно обрабатываются кодом описанным вwchar.h
.Большинство функций
string.h
не производят никакого выделения памяти и контроля границ; эта обязанность целиком ложится на плечи программиста.Содержание
Константы и типы
Имя Примечания NULL
расширяется в null pointer; то есть, значение, которое гарантированно не является валидным адресом объекта в памяти. size_t
беззнаковое целое, имеющее тот же тип, что и результат оператора sizeof
.Функции
Имя Примечания void *memcpy(void *dest, const void *src, size_t n);
копирует n байт из области памяти src в dest, которые не должны пересекаться, в противном случае результат неопределен (возможно как правильное копирование, так и нет) void *memmove(void *dest, const void *src, size_t n);
копирует n байт из области памяти src в dest, которые в отличие от memcpy
могут перекрыватьсяvoid *memchr(const void *s, char c, size_t n);
возвращает указатель на первое вхождение c в первых n байтах s, или NULL, если не найдено int memcmp(const void *s1, const void *s2, size_t n);
сравнивает первые n символов в областях памяти void *memset(void *, int z, size_t);
заполняет область памяти одним байтом z char *strcat(char *dest, const char *src);
дописывает строку src в конец dest char *strncat(char *dest, const char *, size_t);
дописывает не более n начальных символов строки src (или всю src, если ее длина меньше) в конец dest char *strchr(const char *, int);
ищет символ в строке, начиная с головы и возвращает его адрес, или NULL если не найден char *strrchr(const char *, int);
ищет символ в строке, начиная с хвоста и возвращает его адрес, или NULL если не найден int strcmp(const char *, const char *);
лексикографическое сравнение строк int strncmp(const char *, const char *, size_t);
лексикографическое сравнение первых n байтов строк int strcoll(const char *, const char *);
лексикографическое сравнение строк с учетом локали collating order char *strcpy(char *toHere, const char *fromHere);
копирует строку из одного места в другое char *strncpy(char *toHere, const char *fromHere, size_t n);
копирует до n байт строки из одного места в другое char *strerror(int);
возвращает строковое представление сообщения об ошибке errno (не потоко-безопасная) size_t strlen(const char *);
возвращает длину строки size_t strspn(const char *s, const char *accept);
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, перечисленных в accept size_t strcspn(const char *s, const char *reject);
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, не перечисленных в reject char *strpbrk(const char *s, const char *accept);
находит первое вхождение любого символа, перечисленного в accept char *strstr(const char *haystack, const char *needle);
находит первое вхождение строки needle в haystack char *strtok(char *, const char *);
преобразует строку в последовательность токенов. Не потоко-безопасная, нереентрантная. size_t strxfrm(char *dest, const char *src, size_t n);
создает оттранслированную копию строки, такую, что дословное сравнение ее (strcmp) будет эквивалентно сравнению с коллатором. Расширения к ISO C
Имя Примечания Определена в char *strdup(const char *);
создает копию строки и возвращает указатель на нее POSIX; первоначально расширение в BSD errno_t strcpy_s(char *restrict s1, rsize_t s1max, const char *restrict s2);
вариант strcpy
с контролем границISO/IEC WDTR 24731 void *mempcpy(void *dest, const void *src, size_t n);
вариант memcpy
с возвратом байта, следующего за последним записаннымGNU void *memccpy(void *dest, const void *src, int c, size_t n
);
копирует до n байт из одной области памяти в другую (не должны пересекаться), останавливаясь при встрече символа c UNIX 98? int *strerror_r(int, char *, size_t);
возвращает строкое представление кода ошибки errno (потоко-безопасная; небольшая разница в семантике между GNU и XSI/POSIX) GNU, POSIX size_t strlcpy(char *dest, const char *src, size_t n);
вариант strcpy
с контролем границпервоначально OpenBSD, теперь также FreeBSD, Solaris, Mac OS X char *strtok_r(char *, const char *, char **);
потоко-безопасная реентерабельная версия strtok POSIX char *strsignal(int sig);
по аналогии с strerror
, возвращает строковое представление сигналаsig
(не потоко-безопасная)BSDs, Solaris, Linux Ссылки
string.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)
Категории:- Стандартные библиотечные заголовки языка Си
- String.h
Wikimedia Foundation. 2010.