qq_74089332 2022-10-31 23:39 采纳率: 91.7%
浏览 69
已结题

C语言中scanf的问题(想半天了,还是想不通)

在scanf函数中,回车键不是代表,开始匹配,开始读取缓冲区中的数据吗?

img

img


这两张图,第一张图,我直接%d%d,结果这两个数据之间就可以用回车键分开。
第二张图,我用a=%db=%d。结果当我输入a=10以后按回车,它就直接开始读取缓冲区数据了!
为啥啊,为什么第一个图片,按回车,不会立刻开始运行scanf。而第二个图片,按回车直接开始运行scanf了。

img


这张图,当scanf函数里,加了一个\n,,无论怎么按回车,它都不会结束,必须要输入一个非空字符才能继续运行。
我看了很多解释,可还是不理解,我不知道,\n存入缓存区后,按回车,为啥不会开始运行scanf,而是永远不会结束。。
为什么输入一个非空字符,就结束了?是scanf函数匹配不成功,而强制退出了??

  • 写回答

4条回答 默认 最新

  • 三块不一样的石头 2022-11-01 00:11
    关注

    本人不是大佬,不懂编译的底层原理,就单纯说说自己的看法

    img


    img


    有此可见当输入与输入格式不相符时scanf强制结束了

    img


    img


    由此比较可知,scanf强制退出以后,输入依旧保存在缓存区,等待下一个scanf读入

    img


    img


    由此可见,你虽然敲了回车,但你的第一个scanf还处于执行的状态,而恰巧空字符串他又不做任何处理

    总结,能这样思考钻研确实是一件非常好的事情,但对于细枝末节的事情,以砸门的程度,不必过于最牛角尖,知道砸门用就行。

        printf("%d", printf("%d",20221101));
    

    又是新一月的开始,注意身体,早点休息~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 10月31日

悬赏问题

  • ¥15 Linux环境下CA证书更新问题
  • ¥60 微信小程序如何上传QQ聊天文件
  • ¥300 开发的系统遭到无良商家的破解,请问如何防止再次发生,并追回损失
  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 安卓OpenCV人脸识别分类器加载
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)