Affronteremo oggi gli array di caratteri in C, ovvero le stringhe.
Definizione di stringa
Una stringa è un insieme di caratteri (e/o sequenze di escape) rappresentate tra virgolette, ad esempio: “Coding Creativo”.
Abbiamo già visto come definire le variabili di tipo carattere, che ricordiamo sono quelle variabili che comprendono le lettere dell’alfabeto minuscole e maiuscole, le cifre decimali, la punteggiatura e gli altri simboli.
Si utilizza la parola char per specificare che gli indicatori che seguono si riferiscono a variabili di tipo carattere.
Ad esempio:
char a, b;
Ci indica che a e b sono variabili di tipo carattere.
Ricordiamo inoltre che per assegnare un valore ad una variabile di tipo char si devono utilizzare gli apici.
Ad esempio:
a= ‘S’;
b=’I’
Come si utilizzano allora gli array di caratteri in C?
Si utilizzano usando le espressioni del tipo:
char frase [ ] = “Coding Creativo”; indica che l’array contiene la frase contenuta tra i doppi apici. In questo caso il numero di caratteri è determinato dalla quantità di caratteri presenti tra doppi apici più il carattere null, ovvero il carattere \0 che serve a chiudere la stringa, viene infatti anche chiamato carattere terminatore.
char frase [10]; indica che l’array contiene 10 caratteri, compreso però il carattere terminatore.
char a [7] = { ‘c’, ‘o’, ‘d’, ‘i’, ‘n’, ‘g’, ‘\0’ }; indica un array di caratteri formato da 7 elementi.
char nomi [4][10]; indica una array bidimensionale (matrice) con 4 righe e 10 colonne, ad esempio inseriremo dei nomi che avranno una lunghezza massima di nove caratteri (uno è sempre il carattere terminatore).
Il carattere terminatore è molto importante perché come vedremo in seguito ci permetterà di trattare le stringhe senza conoscerne a priori le dimensioni.
Come stampare una array di caratteri in C:
Possiamo utilizzare l’istruzione printf tramite la specifica del formato %s.
Esempio con %s:
main()
{
char frase[ ]=”Coding creativo”;
printf(“%s”, frase);
}
Questa porzione di codice permette di stampare tutta la frase in automatico finché non si troverà il carattere terminatore.
Possiamo in alternativa scorrere tutto l’array di caratteri con un ciclo così come siamo abituati a fare con gli array di interi. In questo caso si usa printf con la specifica di formato %c.
Esempio con %c:
main()
{
char frase[]=”Coding creativo”;
int i=0;
while (frase [i]!=’\0′){
printf(“%c”, frase[i]);
i++;
}
}
Così con un ciclo while, finché non si arriva al carattere terminatore, si leggerà tutto l’array, carattere per carattere.
Alcuni link utili:
Ricerca di un elemento in una matrice
Array o vettori in linguaggio C
Media dei numeri in un array in linguaggio C
Esempio di array con numeri random in C