<!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-feature-navigation-update-disabled vector-sticky-header-enabled skin-thumbsize-clientpref-standard" lang="it" 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://it.wikipedia.org/wiki/String.h"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/mediawiki.skinning.content.parsoid.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="it" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="it" dir="ltr" data-mw-parsoid-version="0.24.0.0-alpha15" data-mw-html-version="2.8.0"><section data-mw-section-id="0" id="mwAQ"><span typeof="mw:Transclusion" id="mwAg"></span>

<p id="mwBA"><b id="mwBQ">string.h</b> è l'<a rel="mw:WikiLink" href="Header_file" title="Header file" class="mw-redirect" id="mwBg">header file</a> della <a rel="mw:WikiLink" href="Libreria_standard_del_C" title="Libreria standard del C" id="mwBw">libreria standard del C</a> che contiene definizioni di macro, costanti e dichiarazioni di funzioni e tipi usati non solo nella manipolazione delle stringhe ma anche nella manipolazione della memoria.</p>

<p id="mwCA">Le funzioni dichiarate in <i id="mwCQ">string.h</i> sono molto popolari ed essendo parte della libreria standard del C, il loro funzionamento è garantito su ogni piattaforma che supporta il linguaggio C. Tuttavia, l'esistenza di alcuni problemi di sicurezza con queste funzioni, come per esempio problemi di <a rel="mw:WikiLink" href="Buffer_overflow" title="Buffer overflow" id="mwCg">buffer overflow</a>, portano i programmatori a scegliere delle varianti più sicure ma meno portabili. Inoltre le funzioni in questione lavorano solamente con caratteri <a rel="mw:WikiLink" href="ASCII" title="ASCII" id="mwCw">ASCII</a> o con un set di caratteri che lo estende in modo compatibile come l'<a rel="mw:WikiLink" href="ISO_8859-1" title="ISO 8859-1" class="mw-redirect" id="mwDA">ISO 8859-1</a>. La gestione di stringhe non compatibili con l'ASCII viene generalmente risolto con l'uso della libreria <code id="mwDQ">wchar.h</code>.</p>

</section><section data-mw-section-id="1" id="mwEA" aria-labelledby="Costanti_e_tipi"><div class="mw-heading mw-heading2"><h2 id="Costanti_e_tipi">Costanti e tipi</h2></div>

<table class="wikitable" id="mwEQ">
<tbody id="mwEg"><tr id="mwEw">
<th id="mwFA">Nome</th><th id="mwFQ">Descrizione</th></tr>
<tr id="mwFg">
<td id="mwFw"><code id="mwGA">NULL</code></td><td id="mwGQ">Una macro che rappresenta la costante <a rel="mw:WikiLink" href="Puntatore_(programmazione)#Il_puntatore_null" title="Puntatore (programmazione)" id="mwGg">puntatore nullo</a>; in altre parole, una costante che rappresenta un valore che è garantito essere l'indirizzo di una posizione <b id="mwGw">non</b> valida nella memoria.</td></tr>
<tr id="mwHA">
<td id="mwHQ"><code id="mwHg">size_t</code></td><td id="mwHw">Un intero senza segno restituito dell'operatore <code id="mwIA">sizeof</code>.</td></tr>
</tbody></table>

</section><section data-mw-section-id="2" id="mwIQ" aria-labelledby="Funzioni"><div class="mw-heading mw-heading2"><h2 id="Funzioni">Funzioni</h2></div>

<table class="wikitable" id="mwIg">
<tbody id="mwIw"><tr id="mwJA">
<th id="mwJQ">Nome</th><th id="mwJg">Descrizione</th></tr>
<tr id="mwJw">
<td id="mwKA"><code id="mwKQ">void    *memcpy(void *dest, const void *src, size_t n);</code></td>
<td id="mwKg">Copia n bytes tra due aree di memoria che non devono sovrapporsi.</td></tr>
<tr id="mwKw">
<td id="mwLA"><code id="mwLQ">void    *memmove(void *dest, const void *src, size_t n);</code></td>
<td id="mwLg">Copia n bytes tra due aree di memoria; a differenza di <code id="mwLw">memcpy</code> le aree di memoria possono sovrapporsi.</td></tr>
<tr id="mwMA">
<td id="mwMQ"><code id="mwMg">void    *memchr(const void *s, int c, size_t n);</code></td>
<td id="mwMw">Ritorna un puntatore alla prima occorrenza di <i id="mwNA">c</i> in <i id="mwNQ">s</i>, o NULL se <i id="mwNg">c</i> non compare tra i primi <i id="mwNw">n</i> caratteri di <i id="mwOA">s</i>.</td></tr>
<tr id="mwOQ">
<td id="mwOg"><code id="mwOw">int      memcmp(const void *s1, const void *s2, size_t n);</code></td>
<td id="mwPA">Confronta i primi <i id="mwPQ">n</i> caratteri di <i id="mwPg">s1</i> con <i id="mwPw">s2</i>.</td></tr>
<tr id="mwQA">
<td id="mwQQ"><code id="mwQg">void    *memset(void *s, int c, size_t n);</code></td>
<td id="mwQw">Colloca <i id="mwRA">c</i> nei primi <i id="mwRQ">n</i> caratteri di <i id="mwRg">s</i>.</td></tr>
<tr id="mwRw">
<td id="mwSA"><code id="mwSQ">char    *strcat(char *dest, const char *src);</code></td>
<td id="mwSg">Concatena <i id="mwSw">src</i> alla stringa <i id="mwTA">dest</i>.</td></tr>
<tr id="mwTQ">
<td id="mwTg"><code id="mwTw"><b id="mwUA">char    *strncat(char *dest, const char *src, size_t n);</b></code></td>
<td id="mwUQ">Concatena al massimo <i id="mwUg">n</i> caratteri <i id="mwUw">src</i> alla stringa <i id="mwVA">dest</i>.</td></tr>
<tr id="mwVQ">
<td id="mwVg"><code id="mwVw">char    *strchr(const char *s, int c);</code></td>
<td id="mwWA">Restituisce un puntatore alla prima occorrenza di <i id="mwWQ">c</i> in <i id="mwWg">s</i>.</td></tr>
<tr id="mwWw">
<td id="mwXA"><code id="mwXQ">char    *strrchr(const char *s, int c);</code></td>
<td id="mwXg">Restituisce un puntatore all'ultima occorrenza di <i id="mwXw">c</i> in <i id="mwYA">s</i>.</td></tr>
<tr id="mwYQ">
<td id="mwYg"><code id="mwYw">int      strcmp(const char *s1, const char *s2);</code></td>
<td id="mwZA">Confronta la stringa <i id="mwZQ">s1</i> con <i id="mwZg">s2</i>.</td></tr>
<tr id="mwZw">
<td id="mwaA"><code id="mwaQ">int      strncmp(const char *, const char *, size_t);</code></td>
<td id="mwag">Confronta al massimo <i id="mwaw">n</i> caratteri della stringa <i id="mwbA">s1</i> con <i id="mwbQ">s2</i>.</td></tr>
<tr id="mwbg">
<td id="mwbw"><code id="mwcA">int      strcoll(const char *, const char *);</code></td>
<td id="mwcQ">Confronta due stringhe utilizzando l'<a rel="mw:WikiLink" href="Ordine_lessicografico" title="Ordine lessicografico" id="mwcg">ordine lessicografico</a> stabilito dalla <a rel="mw:WikiLink" href="Localizzazione_(software)" title="Localizzazione (software)" class="mw-redirect" id="mwcw">localizzazione</a> utilizzata</td></tr>
<tr id="mwdA">
<td id="mwdQ"><code id="mwdg">char    *<a rel="mw:WikiLink" href="Strcpy" title="Strcpy" id="mwdw">strcpy</a>(char *s1, const char *s2);</code></td>
<td id="mweA">Copia la stringa <i id="mweQ">s2</i> nella stringa <i id="mweg">s1</i>, incluso il carattere di terminazione <i id="mwew">\0</i>.</td></tr>
<tr id="mwfA">
<td id="mwfQ"><code id="mwfg"><b id="mwfw">char    *strncpy(char *s1, const char *s2, size_t n);</b></code></td>
<td id="mwgA">Copia al massimo <i id="mwgQ">n</i> caratteri della stringa <i id="mwgg">s2</i> in <i id="mwgw">s1</i>.</td></tr>
<tr id="mwhA">
<td id="mwhQ"><code id="mwhg">char    *strerror(int n);</code></td>
<td id="mwhw">Restituisce un puntatore alla stringa che corrisponde all'errore <i id="mwiA">n</i>.</td></tr>
<tr id="mwiQ">
<td id="mwig"><code id="mwiw">size_t   strlen(const char *s);</code></td>
<td id="mwjA">Restituisce la lunghezza della stringa <i id="mwjQ">s</i>.</td></tr>
<tr id="mwjg">
<td id="mwjw"><code id="mwkA">size_t   strspn(const char *s, const char *accept);</code></td>
<td id="mwkQ">Restituisce la lunghezza della prima istanza della stringa <i id="mwkg">s</i> di lunghezza massima composta esattamente dai caratteri definiti della stringa <i id="mwkw">accept</i></td></tr>
<tr id="mwlA">
<td id="mwlQ"><code id="mwlg">size_t   strcspn(const char *s, const char *reject);</code></td>
<td id="mwlw">Restituisce la lunghezza della porzione iniziale della stringa <i id="mwmA">s</i> di lunghezza massima composta esattamente da caratteri diversi da quelli della stringa <i id="mwmQ">reject</i></td></tr>
<tr id="mwmg">
<td id="mwmw"><code id="mwnA">char    *strpbrk(const char *s, const char *accept);</code></td>
<td id="mwnQ">Restituisce la prima occorrenza di un carattere presente nella stringa <i id="mwng">s</i> che sia uguale ad un qualsiasi carattere presente nella stringa <i id="mwnw">accept</i></td></tr>
<tr id="mwoA">
<td id="mwoQ"><code id="mwog">char    *strstr(const char *haystack, const char *needle);</code></td>
<td id="mwow">Trova la prima occorrenza della stringa <i id="mwpA">needle</i> all'interno della stringa <i id="mwpQ">haystack</i></td></tr>
<tr id="mwpg">
<td id="mwpw"><code id="mwqA">char    *strtok(char *s, const char *delimiters);</code></td>
<td id="mwqQ">Spezza la stringa <i id="mwqg">s</i> in una serie di stringhe chiamate [token] in corrispondenza dei carattere delimitatore <i id="mwqw">delimiters</i></td></tr>
<tr id="mwrA">
<td id="mwrQ"><code id="mwrg">size_t   strxfrm(char *dest, const char *src, size_t n);</code></td>
<td id="mwrw">Trasforma la stringa puntata da <i id="mwsA">src</i> secondo la <a rel="mw:WikiLink" href="Localizzazione_(software)" title="Localizzazione (software)" class="mw-redirect" id="mwsQ">localizzazione</a> in uso e copia i primi n caratteri di <i id="mwsg">src</i> nella stringa <i id="mwsw">dest</i></td></tr>
</tbody></table>

<section data-mw-section-id="3" id="mwtA" aria-labelledby="Estensioni_per_ISO_C"><div class="mw-heading mw-heading3"><h3 id="Estensioni_per_ISO_C">Estensioni per ISO C</h3></div>
<table class="wikitable" id="mwtQ">
<tbody id="mwtg"><tr id="mwtw">
<th id="mwuA">Nome</th><th id="mwuQ">Descrizione</th><th id="mwug">Specifica</th></tr>
<tr id="mwuw">
<td id="mwvA"><code id="mwvQ">char *strdup(const char *);</code></td>
<td id="mwvg">alloca e duplica una stringa nella memoria</td>
<td id="mwvw"><a rel="mw:WikiLink" href="POSIX" title="POSIX" id="mwwA">POSIX</a>; originariamente una estensione di <a rel="mw:WikiLink" href="BSD" title="BSD" class="mw-redirect" id="mwwQ">BSD</a></td></tr>
<tr id="mwwg">
<td id="mwww"><code id="mwxA">errno_t strcpy_s(char *restrict s1, rsize_t s1max, const char *restrict s2);</code></td>
<td id="mwxQ">variante di <code id="mwxg"><a rel="mw:WikiLink" href="Strcpy" title="Strcpy" id="mwxw">strcpy</a></code> che include dei controlli sulla lunghezza delle stringhe</td>
<td id="mwyA">ISO/IEC WDTR 24731</td></tr>
<tr id="mwyQ">
<td id="mwyg"><code id="mwyw">void *mempcpy(void *dest, const void *src, size_t n);</code></td>
<td id="mwzA">variante di <code id="mwzQ">memcpy</code> che ritorna un puntatore al byte successivo all'ultimo byte scritto</td>
<td id="mwzg"><a rel="mw:WikiLink" href="GNU" title="GNU" id="mwzw">GNU</a></td></tr>
<tr id="mw0A">
<td id="mw0Q"><code id="mw0g">void    *memccpy(void *dest, const void *src, int c, size_t n);</code></td>
<td id="mw0w">copia fino ad n byte fra due aree di memoria non sovrapposte, fermandosi quando viene trovato il byte c</td>
<td id="mw1A">UNIX 98?</td></tr>
<tr id="mw1Q">
<td id="mw1g"><code id="mw1w">int     *strerror_r(int, char *, size_t);</code></td>
<td id="mw2A">restituisce una rappresentazione in stringa di un numero di errore (si veda <a rel="mw:WikiLink" href="Errno" title="Errno" class="mw-redirect" id="mw2Q">errno</a>) (thread-safe; alcune differenze semantiche fra la specifica <a rel="mw:WikiLink" href="GNU" title="GNU" id="mw2g">GNU</a> e XSI/<a rel="mw:WikiLink" href="POSIX" title="POSIX" id="mw2w">POSIX</a>)</td>
<td id="mw3A"><a rel="mw:WikiLink" href="GNU" title="GNU" id="mw3Q">GNU</a>, <a rel="mw:WikiLink" href="POSIX" title="POSIX" id="mw3g">POSIX</a></td></tr>
<tr id="mw3w">
<td id="mw4A"><code id="mw4Q">size_t strlcpy(char *dest, const char *src, size_t n);</code></td>
<td id="mw4g">variante di <code id="mw4w"><a rel="mw:WikiLink" href="Strcpy" title="Strcpy" id="mw5A">strcpy</a></code> che comprende controlli sulla lunghezza della stringa</td>
<td id="mw5Q">originariamente <a rel="mw:WikiLink" href="OpenBSD" title="OpenBSD" id="mw5g">OpenBSD</a>, ora anche <a rel="mw:WikiLink" href="FreeBSD" title="FreeBSD" id="mw5w">FreeBSD</a>, <a rel="mw:WikiLink" href="Solaris_(sistema_operativo)" title="Solaris (sistema operativo)" class="mw-redirect" id="mw6A">Solaris</a>, <a rel="mw:WikiLink" href="MacOS" title="MacOS" id="mw6Q">OS X</a></td></tr>
<tr id="mw6g">
<td id="mw6w"><code id="mw7A">char    *strtok_r(char *, const char *, char **);</code></td>
<td id="mw7Q">versione thread-safe di strtok</td>
<td id="mw7g">POSIX</td></tr>
<tr id="mw7w">
<td id="mw8A"><code id="mw8Q">char    *strsignal(int sig);</code></td>
<td id="mw8w">analogamente a <code id="mw9A">strerror</code>, ritorna una rappresentazione in stringa del <a rel="mw:WikiLink" href="Segnale_(informatica)" title="Segnale (informatica)" id="mw9Q">segnale</a> <code id="mw9g">sig</code> (non thread safe)</td>
<td id="mw9w">varie distribuzioni BSD, <a rel="mw:WikiLink" href="Solaris_(sistema_operativo)" title="Solaris (sistema operativo)" class="mw-redirect" id="mw-A">Solaris</a>, <a rel="mw:WikiLink" href="Linux" title="Linux" id="mw-Q">Linux</a></td></tr>
</tbody></table>

</section></section><section data-mw-section-id="4" id="mw-g" aria-labelledby="Altri_progetti"><div class="mw-heading mw-heading2"><h2 id="Altri_progetti">Altri progetti</h2></div>
<div id="interProject" style="border: 1px solid var(--border-color-base, #a2a9b1); display: none; clear: both; padding: .5em" typeof="mw:Transclusion"><p id="sisterProjects"><span>Altri progetti</span></p><ul title="Collegamenti verso gli altri progetti Wikimedia">
<li class="" title=""><a rel="mw:WikiLink/Interwiki" href="https://it.wikibooks.org/wiki/C/Appendice/Librerie%20standard" title="b:C/Appendice/Librerie standard" class="extiw external">Wikibooks</a></li></ul></div><ul><li><span typeof="mw:File"><img alt="Collabora a Wikibooks" src="./_assets_/a57f5814152f3049267aded607469870.png" decoding="async" data-file-width="300" data-file-height="300" data-file-type="drawing" height="18" width="18" class="mw-file-element" loading="lazy"></span> <a rel="mw:WikiLink/Interwiki" href="https://it.wikibooks.org/wiki/" title="b:" class="extiw external">Wikibooks</a> contiene testi o manuali su <b><a rel="mw:WikiLink/Interwiki" href="https://it.wikibooks.org/wiki/C/Appendice/Librerie%20standard" title="b:C/Appendice/Librerie standard" class="extiw external">String.h</a></b></li></ul>

</section><section data-mw-section-id="5" id="mw-w" aria-labelledby="Collegamenti_esterni"><div class="mw-heading mw-heading2"><h2 id="Collegamenti_esterni">Collegamenti esterni</h2></div>
<ul id="mw_A"><li id="mw_Q"><cite class="citation web" style="font-style:normal" typeof="mw:Transclusion" id="mw_g">(<span style="font-weight:bolder; font-size:80%"><abbr title="inglese">EN</abbr></span>) <a rel="mw:ExtLink nofollow" href="https://linux.die.net/man/3/string" class="external text"><span style="font-style:italic;">Operazioni su stringhe</span></a>, su <span style="font-style:italic;">linux.die.net</span>.</cite></li></ul>



</section></div><!--htdig_noindex--><div><div class="zim-footer">
    Questa voce è stata pubblicata da <a class="external text" title="Ultima modifica il 2026-05-16" href="https://it.wikipedia.org/wiki/?title=String.h&amp;oldid=150710806">Wikipedia</a>. Il testo è rilasciato in base alla licenza <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.it">Creative Commons Attribution-Share Alike 4.0</a>, salvo diversa indicazione. Potrebbero essere applicate clausole aggiuntive per i file multimediali.
</div>
</div><!--/htdig_noindex--></div>
            </div>
          </main>
        </div>
      </div>
    </div>
     <script src="./_webp_/webpHandler.js"></script>
  

</body></html>