string.h — заголовний файл стандартної бібліотеки мови Сі, що містить функції для роботи з нуль-термінованими рядками і різними функціями роботи з пам'яттю.
Функції оголошені в string.h
широко використовуються, оскільки будучи частиною стандартної бібліотеки, вони гарантовано працюють на всіх платформах, що підтримують Сі. Однак, існують деякі потенційні проблеми з безпекою, такі як переповнення буферу, що спонукає на користь вибору безпечніших, можливо менш переносимих варіантів. Крім цього, рядкові функції працюють тільки з набором символів ASCII або його сумісними розширеннями, такими як ISO 8859-1; багатобайтові кодування такі як UTF-8 будуть працювати, з відзнакою, що «довжина» рядку буде визначатися як число байтів, а не число символів Юнікоду, яким вони відповідають. Несумісні з ASCII рядки зазвичай обробляються кодом описаним в .
Більшість функцій string.h
не роблять ніякого виділення пам'яті і контролю меж; цей обов'язок цілком лягає на плечі програміста.
Константи і типи
Ім'я | Примітки |
---|---|
NULL | розширюється в нульовий вказівник; тобто, значення, яке гарантовано не є валідною адресою об'єкту в пам'яті. |
size_t | беззнакове ціле, що має той же тип, що і результат оператора sizeof . |
Функції
Ім'я | Примітки |
---|---|
void *(void *dest, const void *src, size_t n); | копіює n байтів з області пам'яті src в dest, які не повинні перетинатися, у іншому випадку результат невизначений (можливо як правильне копіювання, так і ні) |
void *(void *dest, const void *src, size_t n); | копіює n байтів з області пам'яті src в dest, які на відміну від memcpy можуть перекриватися |
void *(const void *s, char c, size_t n); | Повертає вказівник на перше входження з в перших n байтах s, або NULL, якщо не знайдено |
int (const void *s1, const void *s2, size_t n); | порівнює перші n символів в областях пам'яті |
void *(void *, int z, size_t); | заповнює область пам'яті одним байтом z |
char *(char *dest, const char *src); | дописує рядок src в кінець dest |
char *(char *dest, const char *, size_t); | дописує не більше n початкових символів рядка src (або всю src, якщо її довжина менше) у кінець dest |
char *(const char *, int); | шукає символ у рядку, починаючи з голови і повертає його адресу, або NULL якщо не знайдений |
char *(const char *, int); | шукає символ у рядку, починаючи з хвоста і повертає його адресу, або NULL якщо не знайдений |
int (const char *, const char *); | лексикографічне порівняння рядків |
int (const char *, const char *, size_t); | лексикографічне порівняння перших n байтів рядків |
int (const char *, const char *); | лексикографічне порівняння рядків з урахуванням локалі |
char *(strcpy)(char *toHere, const char *fromHere); | копіює рядок з одного місця в інше |
char *(char *toHere, const char *fromHere, size_t n); | копіює до n байт рядку з одного місця в інше |
char *(strerror)(int); | повертає рядкове подання повідомлення про помилку errno (не потокобезпечна) |
size_t (const char *); | повертає довжину рядка |
size_t (const char *s, const char *accept); | визначає максимальну довжину початкового підрядка, що складається виключно з байтів, перерахованих в accept |
size_t (const char *s, const char *reject); | визначає максимальну довжину початкового підрядка, що складається виключно з байтів, не перелічених у reject |
char *(const char *s, const char *accept); | знаходить перше входження будь-якого символу, перерахованого в accept |
char *(const char *haystack, const char *needle); | знаходить перше входження рядка needle в haystack |
char *(char *, const char *); | перетворює рядок у послідовність токенів. Не потіко-безпечна, нереєнтрантна. |
size_t (char *dest, const char *src, size_t n); | створює відтрансльовану копію рядка, таку, що дослівне порівняння її (strcmp) буде еквівалентно порівнянню з коллатором. |
Розширення до ISO C
Ім'я | Примітки | Визначена у |
---|---|---|
char *(const char *); | створює копію рядка і повертає вказівник на неї | POSIX; найперше розширення в BSD |
errno_t (char *(restrict) s1, rsize_t s1max, const char *restrict s2); | варіант strcpy з контролем кордонів | ISO/IEC WDTR 24731 |
void *(void *dest, const void *src, size_t n); | варіант memcpy з поверненням байта, наступного за останніми записами | GNU |
void *(void *dest, const void *src, int c, size_t n
| копіює до n байт з однієї області пам'яті в іншу (не повинні перетинатися), зупиняючись при зустрічі символу c | UNIX 98? |
int *(int, char *, size_t); | повертає рядкове представлення коду помилки errno (потіко-безпечна; невелика різниця в семантиці між GNU та /POSIX) | GNU, POSIX |
size_t (char *dest, const char *src, size_t n); | варіант strcpy з контролем кордонів | першопочатково OpenBSD, зараз також FreeBSD, (Solaris), Mac OS X |
char *(char *, const char *, char **); | потіко-безпечна реєнтерабельна версія strtok | POSIX |
char *(int sig); | аналогічно з strerror , повертає рядкове представлення sig (не потіко-безпечна) | BSDs, Solaris, Linux |
Посилання
- string.h, документація [ 6 листопада 2015 у Wayback Machine.](англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет