String.h: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m WPCleaner v2.05 - Fixed using WP:WPCleaner (Errori comuni)
 
(70 versioni intermedie di 48 utenti non mostrate)
Riga 1:
{{titolo erratominuscolo}}{{libreria standard C}}
{{T|lingua=inglese|argomento=informatica|data=maggio 2007}}
{{libreria standard C}}
 
'''string.h''' è l'[[header file]] della [[libreria standard del C]] 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.
 
Le funzioni dichiarate in ''string.h'' 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 [[buffer overflow]], portano i programmatori a scegliere delle varianti più sicure ma meno portabili. Inoltre le funzioni in questione lavorano solamente con caratteri [[ASCII]] o con un set di caratteri che lo estende in modo compatibile come l'[[ISO- 8859-1]]; i set di caratteri a più byte compatibili con l'ASCII, come l'[[UTF-8]], possono funzionare solo a condizione che la lunghezza ("lenght") della stringa sia interpretata come il numero di byte nella stessa piuttosto che il numero di caratteri [[Unicode]]. La gestione di stringhe non compatibili con l'ASCII viene generalmente risolto con l'uso della libreria <code>[[wchar.h]]</code>.
 
 
==Costanti e tipi==
Line 12 ⟶ 9:
{| class="wikitable"
|-
! NameNome !! NotesDescrizione
|-
|<code>NULL</code> || Una macro che rappresenta la costante [[Puntatore (programmazione)#Il puntatore null|puntatore nullo]]; in altre parole, una costante che rappresenta un valore che è garantito essere l'indirizzo di una posizione '''non''' valida nella memoria.
Line 23 ⟶ 20:
{| class="wikitable"
|-
! NameNome !! NotesDescrizione
|-
|<code>void *memcpy(void *dest, const void *src, size_t n);</code>
Line 43 ⟶ 40:
|Concatena ''src'' alla stringa ''dest''.
|-
|<code>'''char *strncat(char *dest, const char *src, size_t n);'''</code>
|Concatena al massimo ''n'' caratteri ''src'' alla stringa ''dest''.
|-
Line 58 ⟶ 55:
|Confronta al massimo ''n'' caratteri della stringa ''s1'' con ''s2''.
|-
<!--
|<code>int strcoll(const char *, const char *);</code>
|Confronta due stringhe utilizzando l'[[ordine lessicografico]] stabilito dalla [[localizzazione (software)|localizzazione]] utilizzata
|compares two strings using the current [[locale]]'s [[collating order]]
|-
|<code>char *[[strcpy]](char *s1, const char *s2);</code>
-->
|<code>char *strcpy(char *s1, const char *s2);</code>
|Copia la stringa ''s2'' nella stringa ''s1'', incluso il carattere di terminazione ''\0''.
|-
|<code>'''char *strncpy(char *s1, const char *s2, size_t n);'''</code>
|Copia al massimo ''n'' caratteri della stringa ''s2'' in ''s1''.
|-
Line 76 ⟶ 71:
|-
|<code>size_t strspn(const char *s, const char *accept);</code>
|Restituisce la lunghezza della porzioneprima inizialeistanza della stringa ''s'' di lunghezza massima composta esattamente dai caratteri definiti della stringa ''accept''
|-
|<code>size_t strcspn(const char *s, const char *reject);</code>
Line 85 ⟶ 80:
|-
|<code>char *strstr(const char *haystack, const char *needle);</code>
|Trova la prima occorrenza didella stringa ''needle'' all'interno didella stringa ''haystack''
|-
|<code>char *strtok(char *s, const char *delimiters);</code>
|Spezza la stringa ''s'' in una serie di stringhe chiamate [token] in corrispondenza dei carattere delimitatore ''delimiters''
|-
|}
<!--
|<code>size_t strxfrm(char *dest, const char *src, size_t n);</code>
|Trasforma la stringa puntata da ''src'' secondo la [[localizzazione (software)|localizzazione]] in uso e copia i primi n caratteri di ''src'' nella stringa ''dest''
|transforms src into a collating form, such that the numerical sort order of the transformed string is equivalent to the collating order of src.
|}
 
===ExtensionsEstensioni toper ISO C===
 
===Extensions to ISO C===
{| class="wikitable"
|-
! NameNome !! NotesDescrizione !! SpecificationSpecifica
|-
|<code>char *strdup(const char *);</code>
|alloca e duplica una stringa nella memoria
|allocates and duplicates a string into memory
|[[POSIX]]; originallyoriginariamente auna BSDestensione extensiondi [[BSD]]
|-
|<code>errno_t strcpy_s(char *restrict s1, rsize_t s1max, const char *restrict s2);</code>
|bounds-checkedvariante variant ofdi <code>[[strcpy]]</code> che include dei controlli sulla lunghezza delle stringhe
|ISO/IEC WDTR 24731
|-
|<code>void *mempcpy(void *dest, const void *src, size_t n);</code>
|variantvariante ofdi <code>memcpy</code> returningche aritorna pointerun topuntatore theal byte followingsuccessivo theall'ultimo lastbyte written bytescritto
|[[GNU]]
|-
|<code>void *memccpy(void *dest, const void *src, int c, size_t n);</code>
|copia fino ad n byte fra due aree di memoria non sovrapposte, fermandosi quando viene trovato il byte c
);</code>
|copies up to n bytes between two memory areas, which must not overlap, stopping when the byte c is found
|UNIX 98?
|-
|<code>int *strerror_r(int, char *, size_t);</code>
|returnsrestituisce theuna stringrappresentazione representationin stringa di un numero di errore (si ofveda [[errno]]) (thread-safe; somealcune differencesdifferenze insemantiche semanticsfra betweenla specifica [[GNU]] ande [[XSI]]/[[POSIX]])
|[[GNU]], [[POSIX]]
|-
|<code>size_t strlcpy(char *dest, const char *src, size_t n);</code>
|bounds-checkedvariante variant ofdi <code>[[strcpy]]</code> che comprende controlli sulla lunghezza della stringa
|originallyoriginariamente [[OpenBSD]], nowora alsoanche [[FreeBSD]], [[Solaris Operating(sistema Systemoperativo)|Solaris]], [[Mac OS XmacOS|OS X]]
|-
|<code>char *strtok_r(char *, const char *, char **);</code>
|versione thread-safe version ofdi strtok
|POSIX
|}-
|<code>char *[[strsignal]](int sig);</code>
|analogamente a <code>strerror</code>, ritorna una rappresentazione in stringa del [[Segnale (informatica)|segnale]] <code>sig</code> (non thread safe)
|varie distribuzioni BSD, [[Solaris (sistema operativo)|Solaris]], [[Linux]]
|}
 
==ExternalAltri linksprogetti==
{{interprogetto|b=C/Appendice/Librerie standard}}
*{{man|3|string||string operations}}
-->
 
==Collegamenti esterni==
[[en:string.h]]
* {{cita web|https://linux.die.net/man/3/string|Operazioni su stringhe|lingua=en}}
 
{{Portale|Informatica}}
 
[[Categoria:Libreria standard del C]]
 
[[en:C string.h handling]]