String.h: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m WPCleaner v2.05 - Fixed using WP:WPCleaner (Errori comuni)
 
(5 versioni intermedie di 4 utenti non mostrate)
Riga 3:
'''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]]. La gestione di stringhe non compatibili con l'ASCII viene generalmente risolto con l'uso della libreria <code>[[wchar.h]]</code>.
 
==Costanti e tipi==
Riga 17:
 
==Funzioni==
 
{| class="wikitable"
|-
! Nome !! Descrizione
|-
|<code>void *memcpy(void *dest, const void *src, size_t n);</code>
|Copia n bytes tra due aree di memoria che non devono sovrapporsi.
|-
|<code>void *memmove(void *dest, const void *src, size_t n);</code>
|Copia n bytes tra due aree di memoria; a differenza di <code>memcpy</code> le aree di memoria possono sovrapporsi.
|-
|<code>void *memchr(const void *s, int c, size_t n);</code>
|Ritorna un puntatore alla prima occorrenza di ''c'' in ''s'', o NULL se ''c'' non compare tra i primi ''n'' caratteri di ''s''.
|-
|<code>int memcmp(const void *s1, const void *s2, size_t n);</code>
|Confronta i primi ''n'' caratteri di ''s1'' con ''s2''.
|-
|<code>void *memset(void *s, int c, size_t n);</code>
|Colloca ''c'' nei primi ''n'' caratteri di ''s''.
|-
|<code>char *strcat(char *dest, const char *src);</code>
|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''.
|-
|<code>char *strchr(const char *s, int c);</code>
|Restituisce un puntatore alla prima occorrenza di ''c'' in ''s''.
|-
|<code>char *strrchr(const char *s, int c);</code>
|Restituisce un puntatore all'ultima occorrenza di ''c'' in ''s''.
|-
|<code>int strcmp(const char *s1, const char *s2);</code>
|Confronta la stringa ''s1'' con ''s2''.
|-
|<code>int strncmp(const char *, const char *, size_t);</code>
|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
|-
|<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''.
|-
|<code>char *strerror(int n);</code>
|Restituisce un puntatore alla stringa che corrisponde all'errore ''n''.
|-
|<code>size_t strlen(const char *s);</code>
|Restituisce la lunghezza della stringa ''s''.
|-
|<code>size_t strspn(const char *s, const char *accept);</code>
|Restituisce la lunghezza della prima istanza 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>
|Restituisce la lunghezza della porzione iniziale della stringa ''s'' di lunghezza massima composta esattamente da caratteri diversi da quelli della stringa ''reject''
|-
|<code>char *strpbrk(const char *s, const char *accept);</code>
|Restituisce la prima occorrenza di un carattere presente nella stringa ''s'' che sia uguale ad un qualsiasi carattere presente nella stringa ''accept''
|-
|<code>char *strstr(const char *haystack, const char *needle);</code>
|Trova la prima occorrenza della stringa ''needle'' all'interno della 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''
|}
 
===Estensioni per ISO C===
{| class="wikitable"
|-
! Nome !! Descrizione !! Specifica
|-
|<code>char *strdup(const char *);</code>
|alloca e duplica una stringa nella memoria
|[[POSIX]]; originariamente una estensione di [[BSD]]
|-
|<code>errno_t strcpy_s(char *restrict s1, rsize_t s1max, const char *restrict s2);</code>
|variante di <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>
|variante di <code>memcpy</code> che ritorna un puntatore al byte successivo all'ultimo byte scritto
|[[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
|UNIX 98?
|-
|<code>int *strerror_r(int, char *, size_t);</code>
|restituisce una rappresentazione in stringa di un numero di errore (si veda [[errno]]) (thread-safe; alcune differenze semantiche fra la specifica [[GNU]] e XSI/[[POSIX]])
|[[GNU]], [[POSIX]]
|-
|<code>size_t strlcpy(char *dest, const char *src, size_t n);</code>
|variante di <code>[[strcpy]]</code> che comprende controlli sulla lunghezza della stringa
|originariamente [[OpenBSD]], ora anche [[FreeBSD]], [[Solaris (sistema operativo)|Solaris]], [[macOS|OS X]]
|-
|<code>char *strtok_r(char *, const char *, char **);</code>
|versione thread-safe di 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]]
|}
 
==Altri progetti==
{{interprogetto|b=C/Appendice/Librerie standard}}