У меня есть следующая программа:
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. Правильно ли это?