У мене є така програма:
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 і не працює в більшості інших місць).