当我运行以下代码片段时,它一直运行到第二个问题。然后它将“客户是学生吗?(y/n)\n”和“电影时间是几点?(以小时为单位)\n”提示放在一起(它们之间没有要回答的区域)。如果从那里采取任何行动,程序将停止工作。我做错什么了? (我很确定它与语法相关)
int A,B,C,D,age,time;
char edu, ddd;
printf ("What is the customer's age? \n");
scanf("%d", &age);
printf ("Is the customer a student? (y/n) \n");
scanf("%c", &edu);
printf ("What is the movies time? (in hours) \n");
scanf("%d", &time);
printf ("Is the movie 3-D? (y/n) \n");
scanf("%c", &ddd);
最佳答案
您可能需要在每次 scanf 之后吃掉来自 stdin 的额外输入,这样它就不会停留在缓冲区中并导致 scanf 接收缓冲数据。
这是因为在第一个文本条目之后按回车键的换行符保留在缓冲区中,并且是“%c”格式的有效条目 - 如果您查看“edu”的值,您应该会发现它是一个换行符.
关于c - 帮助 C scanf 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3723768/