string.h — заголовний файл стандартної бібліотеки мови Сі, що містить функції для роботи з нуль-термінованими рядками і різними функціями роботи з пам'яттю.
Функції оголошені в string.h
широко використовуються, оскільки будучи частиною стандартної бібліотеки, вони гарантовано працюють на всіх платформах, що підтримують Сі. Однак, існують деякі потенційні проблеми з безпекою, такі як переповнення буферу, що спонукає на користь вибору безпечніших, можливо менш переносимих варіантів. Крім цього, рядкові функції працюють тільки з набором символів ASCII або його сумісними розширеннями, такими як ISO 8859-1; багатобайтові кодування такі як UTF-8 будуть працювати, з відзнакою, що «довжина» рядку буде визначатися як число байтів, а не число символів Юнікоду, яким вони відповідають. Несумісні з ASCII рядки зазвичай обробляються кодом описаним в wchar.h.
Більшість функцій 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, Інтернет
string h zagolovnij fajl standartnoyi biblioteki movi Si sho mistit funkciyi dlya roboti z nul terminovanimi ryadkami i riznimi funkciyami roboti z pam yattyu Funkciyi ogolosheni v string h shiroko vikoristovuyutsya oskilki buduchi chastinoyu standartnoyi biblioteki voni garantovano pracyuyut na vsih platformah sho pidtrimuyut Si Odnak isnuyut deyaki potencijni problemi z bezpekoyu taki yak perepovnennya buferu sho sponukaye na korist viboru bezpechnishih mozhlivo mensh perenosimih variantiv Krim cogo ryadkovi funkciyi pracyuyut tilki z naborom simvoliv ASCII abo jogo sumisnimi rozshirennyami takimi yak ISO 8859 1 bagatobajtovi koduvannya taki yak UTF 8 budut pracyuvati z vidznakoyu sho dovzhina ryadku bude viznachatisya yak chislo bajtiv a ne chislo simvoliv Yunikodu yakim voni vidpovidayut Nesumisni z ASCII ryadki zazvichaj obroblyayutsya kodom opisanim v wchar h Bilshist funkcij string h ne roblyat niyakogo vidilennya pam yati i kontrolyu mezh cej obov yazok cilkom lyagaye na plechi programista Konstanti i tipiIm ya Primitki NULL rozshiryuyetsya v nulovij vkazivnik tobto znachennya yake garantovano ne ye validnoyu adresoyu ob yektu v pam yati size t bezznakove cile sho maye toj zhe tip sho i rezultat operatora sizeof FunkciyiIm ya Primitki void void dest const void src size t n kopiyuye n bajtiv z oblasti pam yati src v dest yaki ne povinni peretinatisya u inshomu vipadku rezultat neviznachenij mozhlivo yak pravilne kopiyuvannya tak i ni void void dest const void src size t n kopiyuye n bajtiv z oblasti pam yati src v dest yaki na vidminu vid memcpy mozhut perekrivatisya void const void s char c size t n Povertaye vkazivnik na pershe vhodzhennya z v pershih n bajtah s abo NULL yaksho ne znajdeno int const void s1 const void s2 size t n porivnyuye pershi n simvoliv v oblastyah pam yati void void int z size t zapovnyuye oblast pam yati odnim bajtom z char char dest const char src dopisuye ryadok src v kinec dest char char dest const char size t dopisuye ne bilshe n pochatkovih simvoliv ryadka src abo vsyu src yaksho yiyi dovzhina menshe u kinec dest char const char int shukaye simvol u ryadku pochinayuchi z golovi i povertaye jogo adresu abo NULL yaksho ne znajdenij char const char int shukaye simvol u ryadku pochinayuchi z hvosta i povertaye jogo adresu abo NULL yaksho ne znajdenij int const char const char leksikografichne porivnyannya ryadkiv int const char const char size t leksikografichne porivnyannya pershih n bajtiv ryadkiv int const char const char leksikografichne porivnyannya ryadkiv z urahuvannyam lokali char a href wiki Strcpy title Strcpy strcpy a char toHere const char fromHere kopiyuye ryadok z odnogo miscya v inshe char char toHere const char fromHere size t n kopiyuye do n bajt ryadku z odnogo miscya v inshe char a href wiki Strerror title Strerror strerror a int povertaye ryadkove podannya povidomlennya pro pomilku errno ne potokobezpechna size t const char povertaye dovzhinu ryadka size t const char s const char accept viznachaye maksimalnu dovzhinu pochatkovogo pidryadka sho skladayetsya viklyuchno z bajtiv pererahovanih v accept size t const char s const char reject viznachaye maksimalnu dovzhinu pochatkovogo pidryadka sho skladayetsya viklyuchno z bajtiv ne perelichenih u reject char const char s const char accept znahodit pershe vhodzhennya bud yakogo simvolu pererahovanogo v accept char const char haystack const char needle znahodit pershe vhodzhennya ryadka needle v haystack char char const char peretvoryuye ryadok u poslidovnist tokeniv Ne potiko bezpechna nereyentrantna size t char dest const char src size t n stvoryuye vidtranslovanu kopiyu ryadka taku sho doslivne porivnyannya yiyi strcmp bude ekvivalentno porivnyannyu z kollatorom Rozshirennya do ISO C Im ya Primitki Viznachena u char const char stvoryuye kopiyu ryadka i povertaye vkazivnik na neyi POSIX najpershe rozshirennya v BSD errno t char a href wiki Restrict title Restrict restrict a s1 rsize t s1max const char restrict s2 variant strcpy z kontrolem kordoniv ISO IEC WDTR 24731 void void dest const void src size t n variant memcpy z povernennyam bajta nastupnogo za ostannimi zapisami GNU void void dest const void src int c size t n kopiyuye do n bajt z odniyeyi oblasti pam yati v inshu ne povinni peretinatisya zupinyayuchis pri zustrichi simvolu c UNIX 98 int int char size t povertaye ryadkove predstavlennya kodu pomilki errno potiko bezpechna nevelika riznicya v semantici mizh GNU ta POSIX GNU POSIX size t char dest const char src size t n variant strcpy z kontrolem kordoniv pershopochatkovo OpenBSD zaraz takozh FreeBSD Solaris Mac OS X char char const char char potiko bezpechna reyenterabelna versiya strtok POSIX char int sig analogichno z strerror povertaye ryadkove predstavlennya sig ne potiko bezpechna BSDs Solaris LinuxPosilannyastring h dokumentaciya 6 listopada 2015 u Wayback Machine angl