茶9 2022-11-08 19:24 采纳率: 66.7%
浏览 22
已结题

为什么输入时%d后面多了一个空格就需要多输入一个数字才能运行出结果

如图,我在写的时候没注意,多打了一个空格,导致我输入1 2 3 再按回车就没结果,而输入1 2 3 4就有结果了,这是为啥

img

img

  • 写回答

2条回答 默认 最新

  • 一只爱打拳的程序猿 Java领域新星创作者 2022-11-08 19:40
    关注

    当参数为"%d "的时候,此时没有处理到结尾,scanf()会认为你要继续进行输入。然而你输入了空格或者回车,scanf()认为他们是分隔符,于是“吃空白”吃掉了。换句话来说,scanf()依旧在等待你的输入,只有当你输入不是空白的字符以后,scanf()才会用它与参数字符串里面的空格比较。

    #include<stdio.h>
    
    int main()
    {
        int A[3] = { 0 };
        for (int i = 0; i < 3; i++)
        {
            scanf("%d", &A[i]);
        }
        for (int j = 0; j < 3; j++)
        {
            printf("%d ", A[j]);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 创建了问题 11月8日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度