vuoi
o PayPal
tutte le volte che vuoi
• Stringhe
Nel C le stringhe (sequenze ininterrotte di caratteri) sono realizzate mediante array di caratteri
Dichiarazione :
char luogo[100]; É un array atto a contenere massimo 100 caratteri di tipo char
• acquisizione di stringhe elemento per elemento
#include <stdio.h>
int main() {
int i;
char s[10];
// Acquisizione dei caratteri
for (i = 0; i < 10; i++) {
printf("\nInserire carattere %d: ", i + 1); Assorbe il carattere newline lasciato
scanf("%c", &s[i]); scanf("%*c"); da scanf
} Tasto invio
// Stampa dei caratteri
printf("\nCaratteri inseriti:\n");
for (i = 0; i < 10; i++) {
printf("%c\n", s[i]); Oppure si può usare fflush(stain)
}
return 0;
È possibile evitare di inserire una stringa carattere per carattere grazie alle funzioni
}
• scanf
• gets Str è già un indirizzo… è l’indirizzo del primo elemento &str[0], quindi scanf non
char str[10]; ha bisogno della &.
scanf("%s", str);
gets(str); Bisogna usare La libera #include <string.h>
Sia scanf("%s",…) che gets(…) delimitano la parte significativa (i caratteri inseriti dall’utente) con il
carattere speciale ‘\0’ (con codifica ASCII = 0).
Se a gets(luogo); digito: Milano in memoria verrà scritto "Milano\0".
Differenze
• scanf("%s",luogo); termina l’inserimento al primo spazio o invio.
• gets(luogo); termina l’inserimento al primo invio
Ecco cosa acquisiscono se digito: Piazza san Babila
• scanf("%s",luogo); "Piazza\0"
• gets(luogo); "Piazza san Babila\0"
• Dichiarazione stringa popolata
Array di caratteri: spesso chiamati stringhe quando rappresentano “caratteri da leggersi in fila”
Dichiarazione+inizializzazione di una stringa
char stringa[] = "word";
Il carattere nullo '\0' termina le stringhe
Perciò l’array stringa ha 5 elementi (non 4):
w o r d \0
Dichiarazione equivalente:
char stringa[] = {'w', 'o', 'r', 'd', '\0'};
Differenza tra 'x' e "x"
• 'x' costante carattere (rappresentata da un intero)
• “x" costante stringa, rappresentata da un array che contiene due caratteri: 'x' e '\0'
• calcolare lunghezza di una stringa
• senza libreri
È possibile calcolare la lunghezza di una stringa andando a contare gli elementi che precedono ‘\0’
#include <stdio.h>
int main() {
int len = 0;
char luogo[100];
// Lettura della stringa
printf("Inserisci un luogo: ");
scanf("%s", luogo);
// Calcolo della lunghezza della stringa
while (luogo[len] != '\0') { Len, la lunghezza della stringa
len++;
} incrementa finché il carattere nell’
array é diverso da \0
// Stampa della lunghezza
printf("%s è lunga %d caratteri\n", luogo, len);
return 0;
}
• Con libreria
#include <string.h>
…
…
len = strlen(luogo); Funzione per assegnare lunghezza di una stringa