<!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-thumbsize-clientpref-standard" lang="fr" 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://fr.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="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><p>
<code><b>&lt;string.h&gt;</b></code> est l'<a href="Header" title="Header">en-tête</a> de la <a href="Biblioth%C3%A8que_standard_du_C" title="Bibliothèque standard du C">bibliothèque standard</a> du <a href="Langage_C" class="mw-redirect" title="Langage C">langage C</a> qui contient les définitions des <a href="Macros" class="mw-redirect mw-disambig" title="Macros">macros</a>, des <a href="Constantes" class="mw-redirect" title="Constantes">constantes</a> et les déclarations de <a href="Fonction_informatique" class="mw-redirect" title="Fonction informatique">fonctions</a> et de types utilisés non seulement pour la manipulation de <a href="Cha%C3%AEnes_de_caract%C3%A8res" class="mw-redirect" title="Chaînes de caractères">chaînes de caractères</a>, mais aussi pour diverses fonctions de manipulations de la <a href="M%C3%A9moire_(informatique)" title="Mémoire (informatique)">mémoire</a>.
</p><p>Les fonctions déclarées dans <code>string.h</code> sont extrêmement utiles, puisqu'en tant que part de la <a href="Biblioth%C3%A8que_standard" title="Bibliothèque standard">bibliothèque standard</a> C, il est certain qu'elles fonctionnent sur toute plate-forme qui supporte le langage C. Malgré tout, quelques problèmes de sécurité existent avec ces fonctions, comme des <a href="D%C3%A9passement_de_tampon" title="Dépassement de tampon">débordements de tampon</a>, ce qui mène les programmeurs à préférer des solutions plus sûres, mais peut-être moins portables. De plus, ces fonctions ne sont compatibles qu'avec l'<a href="ASCII" class="mw-redirect" title="ASCII">ASCII</a> ou des codages semblables comme l'<a href="ISO-8859-1" class="mw-redirect" title="ISO-8859-1">ISO-8859-1</a>&nbsp;; les codages de caractères multibyte, tels qu'<a href="UTF-8" title="UTF-8">UTF-8</a>, posent le problème que la «&nbsp;longueur&nbsp;» des chaînes est interprétée comme un nombre d'octets, plutôt que comme un nombre de caractères <a href="Unicode" title="Unicode">Unicode</a>. La manipulation des chaînes de type non-ASCII est généralement réalisée à travers <code>wchar.h</code>.
</p>

<div class="mw-heading mw-heading2"><h2 id="Constantes_et_types">Constantes et types</h2></div>
<table class="wikitable">

<tbody><tr>
<th scope="col">Nom</th>
<th scope="col">Notes
</th></tr>
<tr>
<td><code>NULL</code></td>
<td>macro exprimant le pointeur nul, cette constante représente la valeur du pointeur pour laquelle on est sûr qu'elle ne désigne ni une adresse valide, ni un objet en mémoire
</td></tr>
<tr>
<td><code>size_t</code></td>
<td>un entier non signé qui correspond au résultat de l'opérateur <tt><a href="Sizeof" title="Sizeof">sizeof</a></tt>
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Fonctions">Fonctions</h2></div>
<table class="wikitable">

<tbody><tr>
<th scope="col">Nom</th>
<th scope="col">Notes
</th></tr>
<tr>
<td><code>void    *memcpy(void *dest, const void *src, size_t n);</code>
</td>
<td>copie <i>n</i> octets entre deux zones mémoire, qui ne doivent pas se superposer
</td></tr>
<tr>
<td><code>void    *memmove(void *dest, const void *src, size_t n);</code>
</td>
<td>copie <i>n</i> octets entre deux zones mémoire&nbsp;; à la différence de memcpy, les zones mémoire peuvent se superposer
</td></tr>
<tr>
<td><code>void    *memchr(const void *s, int c, size_t n);</code>
</td>
<td>retourne en pointeur la première occurrence <i>c</i> parmi les <i>n</i> premiers octets de <i>s</i>, ou <i>NULL</i> si <i>c</i> n'est pas trouvé
</td></tr>
<tr>
<td><code>int      memcmp(const void *s1, const void *s2, size_t n);</code>
</td>
<td>compare les <i>n</i> premiers caractères de deux zones mémoire
</td></tr>
<tr>
<td><code>void    *memset(void *, int, size_t);</code>
</td>
<td>remplit une zone mémoire de la répétition d'un caractère
</td></tr>
<tr>
<td><code>char    *strcat(char *dest, const char *src);</code>
</td>
<td>concatène la chaîne <tt>src</tt> à la suite de dest
</td></tr>
<tr>
<td><code>char    *strncat(char * dest, const char * src, size_t n);</code>
</td>
<td>concatène au plus n caractères de la chaîne <tt>src</tt> à la suite de <tt>dest</tt>
</td></tr>
<tr>
<td><code>char    *strchr(const char *, int);</code>
</td>
<td>cherche un caractère dans une chaîne et renvoie un pointeur sur le caractère, en cherchant depuis le début
</td></tr>
<tr>
<td><code>char    *strrchr(const char *, int);</code>
</td>
<td>idem que strchr, recherche à partir de la fin
</td></tr>
<tr>
<td><code>int      <a href="Strcmp" title="Strcmp">strcmp</a>(const char *, const char *);</code>
</td>
<td>compare deux chaînes par ordre lexicographique
</td></tr>
<tr>
<td><code>int      strncmp(const char *, const char *, size_t n);</code>
</td>
<td>compare les <i>n</i> premiers octets au plus de deux chaînes en utilisant l'ordre lexicographique
</td></tr>
<tr>
<td><code>int      strcoll(const char *, const char *);</code>
</td>
<td>compare deux chaînes en utilisant l'ordre lexicographique, en prenant en compte les <a href="Param%C3%A8tres_r%C3%A9gionaux" title="Paramètres régionaux">paramètres régionaux</a>
</td></tr>
<tr>
<td><code>char    *strcpy(char *toHere, const char *fromHere);</code>
</td>
<td>copie une chaîne de caractères d'une zone à une autre
</td></tr>
<tr>
<td><code>char    *strncpy(char *toHere, const char *fromHere, size_t n);</code>
</td>
<td>copie au plus <i>n</i> caractères d'une chaîne d'une zone à une autre
</td></tr>
<tr>
<td><code>char    *strerror(int);</code>
</td>
<td>retourne la chaîne de caractères correspondant à un numéro d'erreur
</td></tr>
<tr>
<td><code>size_t   strlen(const char *);</code>
</td>
<td>retourne la longueur d'une chaîne caractères
</td></tr>
<tr>
<td><code>size_t   strspn(const char *s, const char *accept);</code>
</td>
<td>détermine la taille de la sous-chaîne initiale maximale de <i>s</i> ne contenant que des caractères présents dans <tt>accept</tt>
</td></tr>
<tr>
<td><code>size_t   strcspn(const char *s, const char *reject);</code>
</td>
<td>détermine la taille de la sous-chaîne initiale maximale de <i>s</i> ne contenant pas de caractères de <tt>reject</tt>
</td></tr>
<tr>
<td><code>char    *strpbrk(const char *s, const char *accept);</code>
</td>
<td>trouve la première occurrence d'un caractère d'<tt>accept</tt> dans <i>s</i>
</td></tr>
<tr>
<td><code>char    *strstr(const char *haystack, const char *needle);</code>
</td>
<td>trouve la première occurrence de la chaîne <tt>needle</tt> dans la chaîne <tt>haystack</tt>
</td></tr>
<tr>
<td><code>char    *strtok(char *, const char *);</code>
</td>
<td>scinde une chaîne en éléments lexicaux. Note: la fonction modifie la chaîne passée en paramètre.
</td></tr>
<tr>
<td><code>size_t   strxfrm(char *dest, const char *src, size_t n);</code>
</td>
<td>transforme <tt>src</tt> de façon que le tri par ordre lexicographique sur des chaînes ainsi transformées soit équivalent au tri par ordre lexicographique sur les chaînes originales en prenant en compte les <a href="Param%C3%A8tres_r%C3%A9gionaux" title="Paramètres régionaux">paramètres régionaux</a>
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="Extensions_à_ISO_C"><span id="Extensions_.C3.A0_ISO_C"></span>Extensions à ISO C</h3></div>
<table class="wikitable">

<tbody><tr>
<th scope="col">Nom</th>
<th scope="col">Notes</th>
<th scope="col">Spécification
</th></tr>
<tr>
<td><code>char *strdup(const char *);</code>
</td>
<td>alloue et duplique une chaîne en mémoire
</td>
<td><a href="POSIX" title="POSIX">POSIX</a>&nbsp;; une extension de BSD au départ
</td></tr>
<tr>
<td><code>errno_t strcpy_s(char *restrict s1, rsize_t s1max, const char *restrict s2);</code>
</td>
<td>variante de <code>strcpy</code> qui vérifie les tailles en mémoire
</td>
<td>ISO/IEC WDTR 24731
</td></tr>
<tr>
<td><code>void *mempcpy(void *dest, const void *src, size_t n);</code>
</td>
<td>variante de <code>memcpy</code> donnant un pointeur sur l'octet suivant le dernier écrit
</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>
</td>
<td>copie au plus <i>n</i> octets entre deux zones mémoire, qui ne doivent pas se superposer, en s'arrêtant quand le caractère <i>c</i> est trouvé
</td>
<td>UNIX 98?
</td></tr>
<tr>
<td><code>int      strerror_r(int, char *, size_t);</code>
</td>
<td>retourne la représentation en chaîne d'un code d'erreur dans un tampon spécifié par l'utilisateur (version de <code>strerror()</code> compatible avec les threads).  La version GNU retourne un pointeur vers la chaîne représentant l'erreur.
</td>
<td>XSI, POSIX
</td></tr>
<tr>
<td><code>size_t strlcpy(char *dest, const char *src, size_t n);</code>
</td>
<td>variante de <code>strcpy</code> qui vérifie la taille des zones allouées
</td>
<td>à l'origine <a href="OpenBSD" title="OpenBSD">OpenBSD</a>, également <a href="FreeBSD" title="FreeBSD">FreeBSD</a>, <a href="Solaris_(syst%C3%A8me_d'exploitation)" title="Solaris (système d'exploitation)">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>version de <tt>strtok</tt> compatible avec les threads
</td>
<td>POSIX
</td></tr>
<tr>
<td><code>char    *strsignal(int sig);</code>
</td>
<td>tout comme <tt>strerror</tt>, renvoie une description textuelles d'un signal (fonctionnement non garanti avec les threads)
</td>
<td>BSDs, Solaris, Linux
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Liens_internes">Liens internes</h2></div>
<ul><li><a href="Langage_C" class="mw-redirect" title="Langage C">Langage C</a></li>
<li><a href="Biblioth%C3%A8que_standard_du_C" title="Bibliothèque standard du C">Bibliothèque standard du C</a></li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"><img alt="icône décorative" src="./_assets_/0c70a452f799bfe840676ee341124611/Circle-icons-dev.svg.png" decoding="async" width="24" height="24" class="mw-file-element" data-file-width="512" data-file-height="512" loading="lazy"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li>                    </ul></div><!--htdig_noindex--><div><div class="zim-footer">
    Cet article est issu de <a class="external text" title="Dernière modification le 2026-05-16" href="https://fr.wikipedia.org/wiki/?title=String.h&amp;oldid=236259763">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
            </div>
          </main>
        </div>
      </div>
    </div>
     <script src="./_webp_/webpHandler.js"></script>
  

</body></html>