为何运行C语言代码时scanf函数需要输入两次内容?
解决scanf需要输入两次的问题
问题根源是你在scanf的格式字符串里多写了\n:
scanf("%d\n", &age);
scanf对格式串里的空白字符(包括\n、空格、制表符)的处理逻辑是:持续跳过输入中的所有空白,直到遇到非空白字符才会结束当前匹配。这就导致你输入23并按下回车后,scanf还在等待下一个非空白输入,所以必须再输入一次才能完成读取。
修正方法很简单,去掉格式串里的\n即可:
#include <stdio.h> int main() { int age; printf("Enter your age: "); scanf("%d", &age); printf("Your age is %d\n", age); return 0; }
补充说明:scanf读取%d(整数)时,本来就会自动跳过输入开头的所有空白字符,完全不需要额外添加\n来处理换行。只有在读取单个字符(比如%c)时,才需要注意空白字符的影响,那时可能需要用 %c(前面加空格)来跳过前置空白,但整数读取场景下不需要这一步。
内容的提问来源于stack exchange,提问作者metameto
相关产品推荐
相关产品推荐

