da
banjoman » 17 set 2016, 12:41
Parola e' dichiarato come singolo char.
Passandolo come argomento alla scanf cosi':
- Codice: Seleziona tutto
scanf ("%s", &parola);
scanf termina di leggere quando l'utente preme INVIO e copia la stringa nella zonadi memoria puntata da &char.
Dato che parola e' dichiarato come singolo carattere, il programma puo' funzionare ma puo' anche crashare di brutto se viene sovrascritta una zona di memoria riservata.
Si puo' correggere in due modi:
1) Dichiarando un array di caratteri sufficientemente grande, ad esempio:
- Codice: Seleziona tutto
char parola[100];
e poi chiamando la scanf semplicemente cosi':
- Codice: Seleziona tutto
scanf ("%s", parola);
(per definizione il nome di un array e' anche il puntatore al primo elemento. Sarebbe come scrivere:
- Codice: Seleziona tutto
scanf ("%s", &parola[0]);
In alternativa a usare array statici, si possono usare le fuznioni di gestione della memoria alloc/malloc, ma per i primi esperimenti meglio stare sul semplice.
Per compilare usa:
- Codice: Seleziona tutto
gcc stampaparola.c -o stampaparola
Attenzione che linux distingue tra caratteri minuscoli e maiuscoli.Dopo aver compilato il programma, in linux si lancia fancdolo predere da ./ cosi':
- Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ ./stampaparola
