<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-menu-disabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-os vector-sticky-header-enabled skin-theme-clientpref-thumb-standard" lang="uk" dir="ltr"><head>
    <meta charset="UTF-8">
    <title>String.h</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" type="image/png" href="./_res_/favicon.png">
    <link rel="canonical" href="https://uk.wikipedia.org/wiki/String.h"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
    <meta name="ResourceLoaderDynamicStyles" content="">
    
    <link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
    <link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
    <link rel="stylesheet" type="text/css" href="./_res_/footer.css">
    <link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
  </head>
  <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-String_h rootpage-String_h skin-vector-2022 action-view">
    <div class="mw-page-container">
      <div class="mw-page-container-inner">
        <div class="mw-content-container">
          <main id="content" class="mw-body">
            <header class="mw-body-header vector-page-titlebar">
              <h1 id="firstHeading" class="firstHeading mw-first-heading">string.h</h1>
            </header>
            <a id="top"></a>
            <div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
              <div id="contentSub">
                <div id="mw-content-subtitle"></div>
              </div>
              <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="uk" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="uk" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r44188005">
/* start https://uk.wikipedia.org/ */


.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}


/* end   https://uk.wikipedia.org/ */
</style><table class="sidebar nomobile nowraplinks" role="navigation" style="width: auto;"><tbody><tr><th class="sidebar-heading">
<a href="%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0_%D0%B1%D1%96%D0%B1%D0%BB%D1%96%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%BC%D0%BE%D0%B2%D0%B8_C" title="Стандартна бібліотека мови C">Заголовні файли C</a></th></tr><tr><td class="sidebar-content" style="text-align: left;">
<ul><li><a href="Assert.h" title="Assert.h">assert.h</a></li>
<li><a href="Complex.h" title="Complex.h">complex.h</a></li>
<li><a href="Ctype.h" title="Ctype.h">ctype.h</a></li>
<li><a href="Errno.h" title="Errno.h">errno.h</a></li>
<li><a href="Fenv.h" title="Fenv.h">fenv.h</a></li>
<li><a href="Float.h" title="Float.h">float.h</a></li>
<li><a href="Inttypes.h" title="Inttypes.h">inttypes.h</a></li>
<li><a href="Iso646.h" title="Iso646.h">iso646.h</a></li>
<li><a href="Limits.h" title="Limits.h">limits.h</a></li>
<li><a href="Locale.h" title="Locale.h">locale.h</a></li>
<li><a href="Math.h" title="Math.h">math.h</a></li>
<li>setjmp.h</li>
<li><a href="Signal.h" title="Signal.h">signal.h</a></li>
<li>stdarg.h</li>
<li><a href="Stdbool.h" title="Stdbool.h">stdbool.h</a></li>
<li><a href="Stddef.h" title="Stddef.h">stddef.h</a></li>
<li><a href="Stdint.h" title="Stdint.h">stdint.h</a></li>
<li><a href="Stdio.h" title="Stdio.h">stdio.h</a></li>
<li>stdlib.h</li>
<li><a class="mw-selflink selflink">string.h</a></li>
<li>tgmath.h</li>
<li><a href="Time.h" title="Time.h">time.h</a></li>
<li><a href="Wchar.h" title="Wchar.h">wchar.h</a></li>
<li><a href="Wctype.h" title="Wctype.h">wctype.h</a></li></ul></td>
</tr></tbody></table>
<p><b>string.h</b> — <a href="%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BD%D0%B8%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB" title="Заголовний файл">заголовний файл</a> стандартної бібліотеки мови <a href="C_(%D0%BC%D0%BE%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)" title="C (мова програмування)">Сі</a>, що містить функції для роботи з нуль-термінованими рядками і різними функціями роботи з пам'яттю.
</p><p>Функції оголошені в <code>string.h</code> широко використовуються, оскільки будучи частиною стандартної бібліотеки, вони гарантовано працюють на всіх платформах, що підтримують Сі. Однак, існують деякі потенційні проблеми з безпекою, такі як <a href="%D0%9F%D0%B5%D1%80%D0%B5%D0%BF%D0%BE%D0%B2%D0%BD%D0%B5%D0%BD%D0%BD%D1%8F_%D0%B1%D1%83%D1%84%D0%B5%D1%80%D0%B0" title="Переповнення буфера">переповнення буферу</a>, що спонукає на користь вибору безпечніших, можливо менш переносимих варіантів. Крім цього, рядкові функції працюють тільки з набором символів <a href="ASCII" title="ASCII">ASCII</a> або його сумісними розширеннями, такими як <a href="ISO_8859-1" title="ISO 8859-1">ISO 8859-1</a>; багатобайтові кодування такі як <a href="UTF-8" title="UTF-8">UTF-8</a> будуть працювати, з відзнакою, що «довжина» рядку буде визначатися як число <a href="%D0%91%D0%B0%D0%B9%D1%82" title="Байт">байтів</a>, а не число символів <a href="%D0%AE%D0%BD%D1%96%D0%BA%D0%BE%D0%B4" title="Юнікод">Юнікоду</a>, яким вони відповідають. Несумісні з ASCII рядки зазвичай обробляються кодом описаним в <a href="Wchar.h" title="Wchar.h">wchar.h</a>.
</p><p>Більшість функцій <code>string.h</code> не роблять ніякого виділення пам'яті і контролю меж; цей обов'язок цілком лягає на плечі програміста.
</p>

<div class="mw-heading mw-heading2"><h2 id="Константи_і_типи"><span id=".D0.9A.D0.BE.D0.BD.D1.81.D1.82.D0.B0.D0.BD.D1.82.D0.B8_.D1.96_.D1.82.D0.B8.D0.BF.D0.B8"></span>Константи і типи</h2></div>
<table class="wikitable">

<tbody><tr>
<th>Ім'я</th>
<th>Примітки
</th></tr>
<tr>
<td><code>NULL</code></td>
<td>розширюється в <a href="%D0%9D%D1%83%D0%BB%D1%8C%D0%BE%D0%B2%D0%B8%D0%B9_%D0%B2%D0%BA%D0%B0%D0%B7%D1%96%D0%B2%D0%BD%D0%B8%D0%BA" title="Нульовий вказівник">нульовий вказівник</a>; тобто, значення, яке гарантовано не є валідною адресою об'єкту в пам'яті.
</td></tr>
<tr>
<td><code>size_t</code></td>
<td>беззнакове ціле, що має той же тип, що і результат оператора <code>sizeof</code>.
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Функції"><span id=".D0.A4.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.97"></span>Функції</h2></div>
<table class="wikitable">

<tbody><tr>
<th>Ім'я</th>
<th>Примітки
</th></tr>
<tr>
<td><code>void    *memcpy(void *dest, const void *src, size_t n);</code>
</td>
<td>копіює n байтів з області пам'яті src в dest, які не повинні перетинатися, у іншому випадку результат невизначений (можливо як правильне копіювання, так і ні)
</td></tr>
<tr>
<td><code>void    *memmove(void *dest, const void *src, size_t n);</code>
</td>
<td>копіює n байтів з області пам'яті src в dest, які на відміну від <code>memcpy</code> можуть перекриватися
</td></tr>
<tr>
<td><code>void    *memchr(const void *s, char c, size_t n);</code>
</td>
<td>Повертає вказівник на перше входження з в перших n байтах s, або NULL, якщо не знайдено
</td></tr>
<tr>
<td><code>int      memcmp(const void *s1, const void *s2, size_t n);</code>
</td>
<td>порівнює перші n символів в областях пам'яті
</td></tr>
<tr>
<td><code>void    *memset(void *, int z, size_t);</code>
</td>
<td>заповнює область пам'яті одним байтом z
</td></tr>
<tr>
<td><code>char    *strcat(char *dest, const char *src);</code>
</td>
<td>дописує рядок src в кінець dest
</td></tr>
<tr>
<td><code>char    *strncat(char *dest, const char *, size_t);</code>
</td>
<td>дописує не більше n початкових символів рядка src (або всю src, якщо її довжина менше) у кінець dest
</td></tr>
<tr>
<td><code>char    *strchr(const char *, int);</code>
</td>
<td>шукає символ у рядку, починаючи з голови і повертає його адресу, або NULL якщо не знайдений
</td></tr>
<tr>
<td><code>char    *strrchr(const char *, int);</code>
</td>
<td>шукає символ у рядку, починаючи з хвоста і повертає його адресу, або NULL якщо не знайдений
</td></tr>
<tr>
<td><code>int      strcmp(const char *, const char *);</code>
</td>
<td>лексикографічне порівняння рядків
</td></tr>
<tr>
<td><code>int      strncmp(const char *, const char *, size_t);</code>
</td>
<td>лексикографічне порівняння перших n байтів рядків
</td></tr>
<tr>
<td><code>int      strcoll(const char *, const char *);</code>
</td>
<td>лексикографічне порівняння рядків з урахуванням локалі  collating order
</td></tr>
<tr>
<td><code>char    *<a href="Strcpy" title="Strcpy">strcpy</a>(char *toHere, const char *fromHere);</code>
</td>
<td>копіює рядок з одного місця в інше
</td></tr>
<tr>
<td><code>char    *strncpy(char *toHere, const char *fromHere, size_t n);</code>
</td>
<td>копіює до n байт рядку з одного місця в інше
</td></tr>
<tr>
<td><code>char    *<a href="Strerror" title="Strerror">strerror</a>(int);</code>
</td>
<td>повертає рядкове подання повідомлення про помилку  <a href="Errno" class="mw-redirect" title="Errno">errno</a> (не потокобезпечна)
</td></tr>
<tr>
<td><code>size_t   strlen(const char *);</code>
</td>
<td>повертає довжину рядка
</td></tr>
<tr>
<td><code>size_t   strspn(const char *s, const char *accept);</code>
</td>
<td>визначає максимальну довжину початкового підрядка, що складається виключно з байтів, перерахованих в accept
</td></tr>
<tr>
<td><code>size_t   strcspn(const char *s, const char *reject);</code>
</td>
<td>визначає максимальну довжину початкового підрядка, що складається виключно з байтів, не перелічених у reject
</td></tr>
<tr>
<td><code>char    *strpbrk(const char *s, const char *accept);</code>
</td>
<td>знаходить перше входження будь-якого символу, перерахованого в accept
</td></tr>
<tr>
<td><code>char    *strstr(const char *haystack, const char *needle);</code>
</td>
<td>знаходить перше входження рядка needle в haystack
</td></tr>
<tr>
<td><code>char    *strtok(char *, const char *);</code>
</td>
<td>перетворює рядок у послідовність токенів. Не потіко-безпечна, нереєнтрантна.
</td></tr>
<tr>
<td><code>size_t   strxfrm(char *dest, const char *src, size_t n);</code>
</td>
<td>створює відтрансльовану копію рядка, таку, що дослівне порівняння її (strcmp) буде еквівалентно порівнянню з коллатором.
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="Розширення_до_ISO_C"><span id=".D0.A0.D0.BE.D0.B7.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.BD.D1.8F_.D0.B4.D0.BE_ISO_C"></span>Розширення до ISO C</h3></div>
<table class="wikitable">

<tbody><tr>
<th>Ім'я</th>
<th>Примітки</th>
<th>Визначена у
</th></tr>
<tr>
<td><code>char *strdup(const char *);</code>
</td>
<td>створює копію рядка і повертає вказівник на неї
</td>
<td><a href="POSIX" title="POSIX">POSIX</a>; найперше розширення в BSD
</td></tr>
<tr>
<td><code>errno_t strcpy s(char *<a href="Restrict" title="Restrict">restrict</a> s1, rsize_t s1max, const char *restrict s2);</code>
</td>
<td>варіант <code>strcpy</code> з контролем кордонів
</td>
<td>ISO/IEC WDTR 24731
</td></tr>
<tr>
<td><code>void *mempcpy(void *dest, const void *src, size_t n);</code>
</td>
<td>варіант <code>memcpy</code> з поверненням байта, наступного за останніми записами
</td>
<td><a href="GNU" title="GNU">GNU</a>
</td></tr>
<tr>
<td><code>void    *memccpy(void *dest, const void *src, int c, size_t n
</code><p><code>);</code>
</p>
</td>
<td>копіює до n байт з однієї області пам'яті в іншу (не повинні перетинатися), зупиняючись при зустрічі символу c
</td>
<td>UNIX 98?
</td></tr>
<tr>
<td><code>int     *strerror r(int, char *, size_t);</code>
</td>
<td>повертає рядкове представлення коду помилки <a href="Errno" class="mw-redirect" title="Errno">errno</a> (потіко-безпечна; невелика різниця в семантиці між <a href="GNU" title="GNU">GNU</a> та XSI/<a href="POSIX" title="POSIX">POSIX</a>)
</td>
<td>GNU, POSIX
</td></tr>
<tr>
<td><code>size_t strlcpy(char *dest, const char *src, size_t n);</code>
</td>
<td>варіант <code>strcpy</code> з контролем кордонів
</td>
<td>першопочатково <a href="OpenBSD" title="OpenBSD">OpenBSD</a>, зараз також <a href="FreeBSD" title="FreeBSD">FreeBSD</a>, <a href="Solaris_Operating_System" class="mw-redirect" title="Solaris Operating System">Solaris</a>, <a href="Mac_OS_X" class="mw-redirect" title="Mac OS X">Mac OS X</a>
</td></tr>
<tr>
<td><code>char    *strtok r(char *, const char *, char **);</code>
</td>
<td>потіко-безпечна реєнтерабельна версія strtok
</td>
<td>POSIX
</td></tr>
<tr>
<td><code>char    *strsignal(int sig);</code>
</td>
<td>аналогічно з <code>strerror</code>, повертає рядкове представлення сигналу <code>sig</code> (не потіко-безпечна)
</td>
<td>BSDs, Solaris, Linux
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Посилання"><span id=".D0.9F.D0.BE.D1.81.D0.B8.D0.BB.D0.B0.D0.BD.D0.BD.D1.8F"></span>Посилання</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.cplusplus.com/reference/cstring/">string.h, документація</a> <small>[<a rel="nofollow" class="external text" href="https://web.archive.org/web/20151106194308/http://www.cplusplus.com/reference/cstring/">Архівовано</a> 6 листопада 2015 у <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>.]</small><style data-mw-deduplicate="TemplateStyles:r44275645">
/* start https://uk.wikipedia.org/ */


.mw-parser-output .ref-info{font-size:85%;cursor:help;margin-left:0.2em;color:var(--color-subtle,#54595d)}


/* end   https://uk.wikipedia.org/ */
</style><span title="англійською мовою" class="ref-info">(англ.)</span></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
    This article is issued from <a class="external text" title="Last edited on 2022-05-14" href="https://uk.wikipedia.org/wiki/?title=String.h&amp;oldid=35738769">Вікіпедія</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.uk">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
            </div>
          </main>
        </div>
      </div>
    </div>
     <script src="./_webp_/webpHandler.js"></script>
  

</body></html>