Ho il seguente programma:
int main(int argc, char *argv[])
{
int a, b;
char c1, c2;
printf("Enter something: ");
scanf("%d",&a); // line 1
printf("Enter other something: ");
scanf("%d", &b); // line 2
printf("Enter a char: ");
scanf("%c",&c1); // line 3
printf("Enter another char: ");
scanf("%c", &c2); // line 4
printf("Done"); // line 5
system("PAUSE");
return 0;
}
Come ho letto nel libro C, l'autore dice che ha scanf()
lasciato un nuovo carattere di riga nel buffer, quindi, il programma non si ferma alla riga 4 per consentire all'utente di inserire i dati, piuttosto memorizza il nuovo carattere di riga in c2 e si sposta su linea 5.
È giusto?
Tuttavia, questo accade solo con char
i tipi di dati? Perché non ho riscontrato questo problema con int
i tipi di dati come nella riga 1, 2, 3. È corretto?
fflush(stdin)
può essere utilizzato prima della chiamata ascanf()
per un singolo carattere. Si prega di leggere Utilizzofflush(stdin)
per una discussione dei pro e dei contro e delle alternative a quel metodo (che funziona, più o meno, su Windows e non funziona nella maggior parte degli altri posti).