string.h
Заголовні файли C |
---|
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);
|
заповнює область пам'яті одним байтом 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) буде еквівалентно порівнянню з коллатором. |
Ім'я | Примітки | Визначена у |
---|---|---|
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, документація [Архівовано 6 листопада 2015 у Wayback Machine.](англ.)