[C] Problemi fflush e gets

di il
5 risposte

[C] Problemi fflush e gets

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

  • Re: [C] Problemi fflush e gets

    Come usi il fflush ?

    Con quale compilatore lavori?
  • Re: [C] Problemi fflush e gets

    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
  • Re: [C] Problemi fflush e gets

    Fflush(stdin) funziona solo con Visual C++ di Microsoft (proprio perché non completamente standard)
  • Re: [C] Problemi fflush e gets

    Allora con che alternativa standard posso lavorare?
  • Re: [C] Problemi fflush e gets

    Un semplice ciclo, magari

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