Stringhe
In linguaggio C
Stringhe



Un insieme di caratteri in sequenza forma una
stringa.
Alcuni linguaggi definiscono per le stringhe uno
specifico tipo di dato e offrono metodi specifici per
gestire valori di quel tipo.
Il linguaggio C, tranne che in alcuni suoi dialetti, non
fornisce un tipo di dato specifico per le stringhe che
vengono trattate come array di caratteri.
char nomeStudente[10];
Stringhe in C


Esistono molti modi per gestire le stringhe in linguaggio C.
Dichiarazione:


char <identificatore>[<dimensione>];
Esempio di dichiarazione:






char nomeStudente[20];
la stringa è in pratica un array di caratteri
nomeStudente è l’identificatore della stringa
20 è la dimensione
il numero di caratteri che la stringa può contenere è dato dalla
dimensione – 1 (nell’esempio 19)
un elemento è utilizzato per memorizzare il carattere terminatore di
stringa: \0, conosciuto come il carattere null.
Assegnamento


Come per gli array non è possibile eseguire direttamente
un assegnamento di un valore ad una stringa.
Esempio:
char nomeStudente[10];
// 19 caratteri + terminatore
nomeStudente = "Rossi"; // Assegnamento errato

La libreria string.h mette a disposizione funzioni per
operare con le stringhe, in particolare strcpy permette di
assegnare un valore ad una stringa
char nomeStudente[10];
// 19 caratteri + terminatore
strcpy(nomeStudente,"Rossi"); // Assegnamento corretto
Visualizzazione


E’ possibile la visualizzazione del contenuto di una stringa.
Es.
cout << "Il nome dello studente e': " << nomeStudente << endl;


E’ possibile visualizzare ogni singolo carattere della
stringa:
Es.
for (i=0; i<10; i++)
cout << "Carattere " << i << " = " << nomeStudente[i] << endl;
Input



Mediante cin è possibile ricevere in input una stringa.
Attenzione: non c'è controllo nè segnalazione di errore di
superamento limite caratteri
Esempio:
cout << "Inserisci il nome dello studente ";
cin >> nomeStudente;
cout << "Il nome dello studente e': " << nomeStudente;
Modifica di un carattere




Come per gli array è possibile accedere ad ogni singolo
elemento (ogni singolo carattere) della stringa.
Il primo carattere ha indice 0
Attenzione al terminatore di stringa
Esempio:
nomeStudente[2]='K';
Stringhe e … caratteri

Attenzione alla differenza tra apice e doppio apice:


'C' rappresenta un carattere
"C" rappresenta una stringa (carattere + terminatore)
Confronto fra stringhe

La funzione strcmp(stringa1,stringa2) confronta stringa2
con stringa1, se sono uguali restituisce 0, se stringa1 è
maggiore di stringa2 un valore positivo, altrimenti un
valore negativo;

Esempio:
if (strcmp(nomeStudente,"Rossi")==0)
cout << "Hai inserito il nome Rossi";
else
if (strcmp(nomeStudente,"Rossi")>0)
cout<<"Il nome inserito segue Rossi in ordine alfabetico";
else
cout<<"Il nome inserito precede Rossi in ordine alfabetico";
Libreria string.h








La libreria string.h rende disponibili molte funzioni standard per gestire le
stringhe.:
strcpy(stringa1, stringa2) copia stringa2 su stringa1;
strncpy(stringa1, stringa2, n) copia i primi n caratteri di stringa2 in stringa1;
strcat(stringa1, stringa2) concatena stringa2 a stringa1;
strcmp(stringa1, stringa2) confronta stringa2 con stringa1, se sono uguali
restituisce 0, se stringa1 è maggiore di stringa2 un valore positivo, altrimenti
un valore negativo;
intero = atoi(stringa) converte una stringa in un intero;
reale = atof(stringa) converte una stringa in un valore in virgola mobile
double;
intero = strlen(stringa) conta il numero di caratteri di una stringa;
Scarica

stringa - Alberto Ferrari