string.h — заголовний файл стандартної бібліотеки мови Сі, що містить функції для роботи з нуль-термінованими рядками і різними функціями роботи з пам'яттю.
Функції оголошені в string.h широко використовуються, оскільки будучи частиною стандартної бібліотеки, вони гарантовано працюють на всіх платформах, що підтримують Сі. Однак, існують деякі потенційні проблеми з безпекою, такі як переповнення буферу, що спонукає на користь вибору безпечніших, можливо менш переносимих варіантів. Крім цього, рядкові функції працюють тільки з набором символів ASCII або його сумісними розширеннями, такими як ISO 8859-1; багатобайтові кодування такі як UTF-8 будуть працювати, з відзнакою, що «довжина» рядку буде визначатися як число байтів, а не число символів Юнікоду, яким вони відповідають. Несумісні з ASCII рядки зазвичай обробляються кодом описаним в wchar.h.
Більшість функцій string.h не роблять ніякого виділення пам'яті і контролю меж; цей обов'язок цілком лягає на плечі програміста.
Константи і типи
Ім'я ПриміткиNULL розширюється в нульовий вказівник; тобто, значення, яке гарантовано не є валідною адресою об'єкту в пам'яті.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);Повертає вказівник на перше входження з в перших n байтах s, або NULL, якщо не знайденоint memcmp(const void *s1, const void *s2, size_t n);порівнює перші n символів в областях пам'ятіvoid *memset(void *, int z, size_t);заповнює область пам'яті одним байтом zchar *strcat(char *dest, const char *src);дописує рядок src в кінець destchar *strncat(char *dest, const char *, size_t);дописує не більше n початкових символів рядка src (або всю src, якщо її довжина менше) у кінець destchar *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 orderchar *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);визначає максимальну довжину початкового підрядка, що складається виключно з байтів, перерахованих в acceptsize_t strcspn(const char *s, const char *reject);визначає максимальну довжину початкового підрядка, що складається виключно з байтів, не перелічених у rejectchar *strpbrk(const char *s, const char *accept);знаходить перше входження будь-якого символу, перерахованого в acceptchar *strstr(const char *haystack, const char *needle);знаходить перше входження рядка needle в haystackchar *strtok(char *, const char *);перетворює рядок у послідовність токенів. Не потіко-безпечна, нереєнтрантна.size_t strxfrm(char *dest, const char *src, size_t n);створює відтрансльовану копію рядка, таку, що дослівне порівняння її (strcmp) буде еквівалентно порівнянню з коллатором.
Розширення до ISO C Ім'я Примітки Визначена уchar *strdup(const char *);створює копію рядка і повертає вказівник на неїPOSIX; найперше розширення в BSDerrno_t strcpy s(char *restrict s1, rsize_t s1max, const char *restrict s2);варіант strcpy з контролем кордонівISO/IEC WDTR 24731void *mempcpy(void *dest, const void *src, size_t n);варіант memcpy з поверненням байта, наступного за останніми записамиGNUvoid *memccpy(void *dest, const void *src, int c, size_t n );копіює до n байт з однієї області пам'яті в іншу (не повинні перетинатися), зупиняючись при зустрічі символу cUNIX 98?int *strerror r(int, char *, size_t);повертає рядкове представлення коду помилки errno (потіко-безпечна; невелика різниця в семантиці між GNU та XSI/POSIX)GNU, POSIXsize_t strlcpy(char *dest, const char *src, size_t n);варіант strcpy з контролем кордонівпершопочатково OpenBSD, зараз також FreeBSD, Solaris, Mac OS Xchar *strtok r(char *, const char *, char **);потіко-безпечна реєнтерабельна версія strtokPOSIXchar *strsignal(int sig);аналогічно з strerror, повертає рядкове представлення сигналу sig (не потіко-безпечна)BSDs, Solaris, Linux
Посилання string.h, документація