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 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径