You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何运行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 17:37:02