C - Stringhe
Le stringhe sono in realtà una matrice unidimensionale di caratteri terminata da un file nullcarattere "\ 0". Quindi una stringa con terminazione null contiene i caratteri che compongono la stringa seguita da anull.
La seguente dichiarazione e inizializzazione creano una stringa composta dalla parola "Hello". Per contenere il carattere null alla fine della matrice, la dimensione della matrice di caratteri contenente la stringa è maggiore di uno rispetto al numero di caratteri nella parola "Hello".
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Se segui la regola di inizializzazione dell'array, puoi scrivere l'istruzione sopra come segue:
char greeting[] = "Hello";
Di seguito è riportata la presentazione in memoria della stringa definita sopra in C / C ++ -
In realtà, non si inserisce il carattere null alla fine di una costante di stringa. Il compilatore C inserisce automaticamente "\ 0" alla fine della stringa quando inizializza l'array. Proviamo a stampare la stringa di cui sopra -
#include <stdio.h>
int main () {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("Greeting message: %s\n", greeting );
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Greeting message: Hello
C supporta un'ampia gamma di funzioni che manipolano stringhe con terminazione null -
Sr.No. | Funzione e scopo |
---|---|
1 | strcpy(s1, s2); Copia la stringa s2 nella stringa s1. |
2 | strcat(s1, s2); Concatena la stringa s2 alla fine della stringa s1. |
3 | strlen(s1); Restituisce la lunghezza della stringa s1. |
4 | strcmp(s1, s2); Restituisce 0 se s1 e s2 sono uguali; minore di 0 se s1 <s2; maggiore di 0 se s1> s2. |
5 | strchr(s1, ch); Restituisce un puntatore alla prima occorrenza del carattere ch nella stringa s1. |
6 | strstr(s1, s2); Restituisce un puntatore alla prima occorrenza della stringa s2 nella stringa s1. |
L'esempio seguente utilizza alcune delle funzioni sopra menzionate:
#include <stdio.h>
#include <string.h>
int main () {
char str1[12] = "Hello";
char str2[12] = "World";
char str3[12];
int len ;
/* copy str1 into str3 */
strcpy(str3, str1);
printf("strcpy( str3, str1) : %s\n", str3 );
/* concatenates str1 and str2 */
strcat( str1, str2);
printf("strcat( str1, str2): %s\n", str1 );
/* total lenghth of str1 after concatenation */
len = strlen(str1);
printf("strlen(str1) : %d\n", len );
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10