PROBLEMA [C] Problema con gets()

Zero93

Nuovo Utente
26
0
[Linguaggio di programmazione C, IDE Eclipse, compilatore gcc]
Buona sera, ho un problema con la funzione gets.
Vi posto un estratto del codice

printf("Destinatario: ");
scanf("%s", Email.destinatario);
printf("Oggetto email: ");
gets(Email.oggetto);


printf("Scrivi l'email\n");
do{
gets(word);
sprintf(Email.corpo, "%s%s\n", Email.corpo, word);
}while(strcmp(word, "$%$%$%") != 0);

In poche parole viene completamente ignorato il primo gets, e si passa dall'acquisizione del destinatario direttamente al ciclo do while.
Se tolgo gets(Email.oggetto); , verrà ignorato il gets(word) nel ciclo do while, ma solo al primo giro.

Avete soluzioni?
 

David Gnomo Amico Mio

Nuovo Utente
26
3
La scanf "ignora" in modo automatico l'ultimo \n (che inserisci quando il programma ti chiede Email.destinatario).

In questo modo la gets(Email.oggetto) legge subito questo \n , e ovviamente non ti chiede nessuna stringa.

Tutto ciò dovrebbe risolversi in questo modo:

Codice:
       printf("Destinatario: ");
       scanf("%s[B] \n[/B]", Email.destinatario);
       printf("Oggetto email: ");
       gets(Email.oggetto);
       ...
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!