[C] Problemi fflush e gets

di Anonimizzato11447 il
5 risposte
Ho letto molto in giro su internet sui comportamenti di gets ed i problem di un buffer che trattenga qualche carattele, specialmente \n.
Pur conoscendo che fflush non è da considerarsi una buona soluzione e che ce ne sarebbero di migliori, per lo meno dovrebbe almeno funzionare no?
eppure non sembra sortire effetto. il frammento di codice è il seguente:

printf("Nome: ");
gets(u.nome);
printf("Cognome: ");
gets(u.cognome);
printf("Mail: ");
scanf("%s", u.mail);
printf("Numero: ");
scanf("%d", &u.num);
Il nome me lo salta e passa subito al cognome (sicuramente il buffer trattiene l' \n di una operazione precedente: una scanf che preleva un decimale)
Il fflush ho provato a metterlo ma non va per niente. come debbo fare?

5 Risposte

  • Come usi il fflush ?

    Con quale compilatore lavori?
  • Io ho xcode che dovrebbe usare gcc.

    fflush lo uso con
    
    fflush(stdin);
    
    e ho provato a piazzarlo prima del gets per pulire proprio li ed essere sicuro che al gets ci arrivase pulito, ma visto che non funzionava poi ho provato un po di altri punti (logicamente validi) ma nada comunque
  • Fflush(stdin) funziona solo con Visual C++ di Microsoft (proprio perché non completamente standard)
  • Allora con che alternativa standard posso lavorare?
  • Un semplice ciclo, magari

    while(getchar()!'\n') ;
Devi accedere o registrarti per scrivere nel forum
5 risposte