Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduzione al C
Unità 8 – Stringhe
int main() {
const int N = 25;
Questo programma stampa
char s[N]; Hello
int i;
for(i = 0; i < N; i++)
s[i] = 'a';
s[0] = 'H'; s[1]='e'; s[2]='l';
s[3]='l'; s[4]='o';
s[5]='\0'; // terminatore stringa
printf("%s\n", s);
return 0;
}
int main() {
char str[10] = "some text";
printf("%s\n", str);
return 0;
}
int main() {
char str[10] = "some text";
printf("%s\n", str);
printf("dimensione di str = %d\n“,
sizeof(str));
char s[] = {'g', 'u', 'a', 'r', 'd', 'a'};
printf("%s\n", s);
printf("dimensione di s = %d\n", sizeof(s));
return 0;
}
Manca il carattere di
terminazione '\0'
dopo l’ultima 'a' di
“guarda”
int main() {
char str[100] = "test string";
printf("%d\n", sizeof(str));
printf("%d\n", strlen(str));
return 0;
} Questo programma stampa
100
11
Stringhe - Unità 8 2013/2014 Pagina 27
Possibile implementazione di strlen!
Esempio
"ciao" con d=3 diventerà "fldr"
char *
strncpy(char *dest, const char *src, size_t n);
int main() {
char str1[] = "esempio";
char str2[40];
char str3[40];
strcpy(str2, str1);
strcpy(str3, "copia riuscita");
printf("str1: %s\nstr2: %s\nstr3: %s\n",
str1, str2, str3);
return EXIT_SUCCESS;
}
Stringhe - Unità 8 2013/2014 Pagina 45
Nota su strcpy!
La funzione strcpy copia la stringa src nella
stringa dest, incluso il carattere terminatore e
la restituisce.
int main() {
char str1[] = "esempio";
char str2[40];
char str3[40];
strcpy(str2, str1);
strncpy(str3, "copia riuscita", 8);
printf("str1: %s\nstr2: %s\nstr3: %s\n",
str1, str2, str3);
return EXIT_SUCCESS;
} Stringhe - Unità 8 2013/2014 Pagina 47
Esecuzione
str1: esempio
str2: esempio
str3: copia ri[d♣Ç
char *
strncat(char *str1, const char *str2, size_t n);
int main() {
char str[80];
strcpy(str, "queste ");
strcat(str, "stringhe ");
strcat(str, "sono ");
strcat(str, "concatenate.");
printf("%s\n", str);
return EXIT_SUCCESS;
}
Stringhe - Unità 8 2013/2014 Pagina 50
Occorrenze di stringhe in C
char *strstr(const char *str1, const char *str2);
int main() {
char str[] = "Tutti a casa, subito!";
char* pch;
pch = strstr(str, "casa");
if(pch != NULL)
strncpy(pch, "mare", 4);
printf("%s\n", str);
return EXIT_SUCCESS;
}
Stringhe - Unità 8 2013/2014 Pagina 52
Leggere stringhe da stream
char*
fgets(char *s, int n, FILE *stream);
return 0;
}
Meglio di scanf: possiamo evitare di eccedere
la taglia del buffer passato in input
Stringhe - Unità 8 2013/2014 Pagina 54
Esercizio
>./stampaargomenti
stampaargomenti