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日

悬赏问题

  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历