c - 帮助 C scanf 语法

标签 c syntax

当我运行以下代码片段时,它一直运行到第二个问题。然后它将“客户是学生吗?(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/

相关文章:

c 预处理器字符串连接

c - 释放仅在 MEX 文件中使用的数组是否会带来加速

c - 关于sigwait()的模糊描述

c - static size_t strnlen(const char *s, size_t max) -- 为什么是静态返回值?

syntax - Lua中使用花括号吗?

mysql - 创建表的 SQL 语法问题

c++ - 使用带有 C 编译器的纯 C 和 C++ 编译器的 "C part"有什么区别?

php - !== 和 === 在 PHP 中是什么意思?

php - MySQL 括号?

c++ - GCC -Wuninitialized/-Wmaybe-uninitialized 问题