PDA

Visualizza la versione completa : [C] Problema con acquisizione stringhe da tastiera


wFree
07-01-2014, 19:01
int main()
{
char s[20];
char s2[30];
int i=0;

scanf("%s", s);
printf("%s\n", s);

gets(s2);
printf("%s", s2);

return 0;
}



Se io scrivo "ciao a tutti" mi considera "ciao" come s e " a tutti" come s2
Ora, considerato che sarebbe sbagliato agire così, in quanto scanf("%s", s) mi prende una stringa solo fino allo spazio, la mia intenzione sarebbe quella di creare una cosa di questo tipo:
scrivo "ciao", mi da l'output "ciao, scrivo " a tutti" e mi da l'output " a tutti"

Solo che se io scrivo semplicemente "ciao" il programma termina lasciando s2 vuoto.

Sapete dirmi dove sbaglio? Grazie:)

oregon
07-01-2014, 19:32
Puoi utilizzare fgets per acquisire tutta la stringa

wFree
07-01-2014, 19:46
Si si, ti ringrazio, questo lo so. Vorrei però capire cosa e perchè non funziona in questo determinato caso :mame:

oregon
07-01-2014, 19:58
Ok ... devi pulire il buffer di input dopo la scanf ... aggiungi

while(getchar()!='\n');

vbextreme
07-01-2014, 20:04
usa solo la gets o ancor meglio la fgets e lascia perdere la scanf.

??? quando sono apparse tutte ste risposte ???

wFree
07-01-2014, 20:08
Intendi così?


char s[20];
char s2[30];

while(getchar()!='\n')
scanf("%s", s);
printf("%s\n", s);

gets(s2);
printf("%s", s2);

return 0;

Invece di darmi come output "ciao" mi da solo "iao" (ti prego non odiarmi se ho capito sbagliato)

oregon
07-01-2014, 20:12
Avevo scritto

... dopo la scanf ... aggiungi ...

wFree
07-01-2014, 20:18
Asino io, ti ringrazio

Alex'87
08-01-2014, 12:16
Asino io, ti ringrazio

E occhio al ;

Loading