Concetti Chiave
- C fornisce diverse funzioni per la manipolazione delle stringhe, definite nel file header stringh.h.
- Le funzioni di copia come strcpy e strncpy consentono di copiare stringhe, ma richiedono attenzione per evitare buffer overflow.
- Funzioni come strcat e strncat permettono di concatenare stringhe, aggiungendo i caratteri di una stringa a un'altra.
- Le funzioni di confronto, come strcmp e strncmp, sono utilizzate per confrontare stringhe in modo lessicografico.
- È fondamentale prestare attenzione all'uso delle funzioni strcpy() e strcat(), poiché non sono sicure e possono causare comportamenti imprevisti.
Funzioni di supporto per stringhe
C fornisce funzioni di supporto per modificare le stringhe letterali. I prototipi di funzioni sono specificati nel file header stringh.h, che contengono puntatori e lunghezze. Se l’indirizzo passato alla funzione non è una stringa, il comportamento delle funzioni è non definito, si possono verificare problemi di buffer overflow.
Funzioni di copia (ritorno s1)
char *strcpy(char *s1, const char *s2); -> Copia i caratteri di s2 in s1, incluso '\0'.
char *strncpy(char *s1, const char *s2, size t n); -> Copia massimo n caratteri di s2 in s1.
Funzioni di concatenazione (ritorno s1)
char *strcat(char *s1, const char *s2); -> Aggiunge i caratteri di s2 a s1.
char *strncat(char *s1, const char *s2, size t n); -> Aggiunge massimo n caratteri di s2 a s1.
Funzioni di confronto (ritorno =0, 0)
int strcmp(const char *s1, const char *s2); -> Confronta lessicograficamente s1 e s2.
int strncmp(const char *s1, const char *s2, size t n); -> Confronta massimo n caratteri di s1 e s2.
Funzioni di ricerca (ritorno indirizzo memoria o NULL)
char *strchr(const char *s, int c); -> Individua la prima occorrenza di c in s.
char *strrchr(const char *s, int c); -> Individua l'ultima occorrenza di c in s.
char] strstr(char*str, char*sub); -> Ricerca la sottostringa all’interno della stringa
Funzioni miscellanee e avvertenze
Funzioni miscellanee
size t strlen(const char *s); -> Ritorna la lunghezza della stringa s ( senza \0 )
char *strtok(s, ct) strtok cerca in s dei token delimitati da caratteri di ct.
Le funzioni strcpy() e strcat() non sono sicure e non dovrebbero essere utilizzate.
Domande da interrogazione
- Quali sono le funzioni di copia disponibili per le stringhe in C?
- Quali funzioni di confronto delle stringhe sono fornite in C?
- Quali avvertenze sono associate all'uso delle funzioni di supporto per le stringhe in C?
Le funzioni di copia disponibili sono `strcpy`, che copia i caratteri di una stringa in un'altra, e `strncpy`, che copia un massimo di n caratteri. È importante notare che l'uso di queste funzioni può portare a problemi di buffer overflow se non si gestiscono correttamente gli indirizzi delle stringhe.
Le funzioni di confronto sono `strcmp`, che confronta due stringhe lessicograficamente, e `strncmp`, che confronta un massimo di n caratteri di due stringhe. Entrambe restituiscono 0 se le stringhe sono uguali.
È fondamentale prestare attenzione all'uso delle funzioni `strcpy` e `strcat`, poiché non sono considerate sicure e possono causare problemi di buffer overflow. Inoltre, se l'indirizzo passato non è una stringa, il comportamento delle funzioni è non definito.