У меня есть такая программа:
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;
}
Как я читал в книге C, автор говорит, что scanf()
оставил символ новой строки в буфере, поэтому программа не останавливается на строке 4 для ввода данных пользователем, скорее она сохраняет символ новой строки в c2 и переходит к строка 5.
Это правильно?
Однако происходит ли это только с char
типами данных? Потому что я не видел этой проблемы с int
типами данных, как в строке 1, 2, 3. Верно?
fflush(stdin)
использовать его перед вызовомscanf()
для одного символа. Пожалуйста, прочтите Использованиеfflush(stdin)
для обсуждения плюсов и минусов, а также альтернатив этому методу (который более или менее работает в Windows и не работает в большинстве других мест).