J'ai le programme suivant:
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;
}
Comme je l'ai lu dans le livre C, l'auteur dit qu'il a scanf()
laissé un nouveau caractère de ligne dans la mémoire tampon, par conséquent, le programme ne s'arrête pas à la ligne 4 pour que l'utilisateur entre les données, il stocke plutôt le caractère de nouvelle ligne dans c2 et passe à ligne 5.
Est-ce correct?
Cependant, cela ne se produit-il qu'avec char
les types de données? Parce que je n'ai pas vu ce problème avec int
les types de données comme dans les lignes 1, 2, 3. Est-ce vrai?
fflush(stdin)
peut être utilisé avant l'appel àscanf()
pour un seul caractère. Veuillez lire Utilisationfflush(stdin)
pour une discussion des avantages et des inconvénients et des alternatives à cette méthode (qui fonctionne plus ou moins sous Windows et ne fonctionne pas dans la plupart des autres endroits).