找回密码
 立即注册
查看: 552|回复: 6

关于keil scanf底层调用的问题

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-18 10:31:24
已绑定手机

40

主题

296

回帖

906

积分

高级会员

积分
906
发表于 2024-1-26 12:38:00 来自手机 | 显示全部楼层 |阅读模式
用scanf时候偶然发现它不光要调用_getkey,怎么还要调putchar啊!!这个网上查的不一样啊。
        至于怎么发现的,是本人在用scanf获取字符串时,串口都会莫名其妙的把电脑发送的东西回显出来。仔细检查了主函数里根本没有printf之类的发送函数。最后尝试把putchar里放了个闪灯,每次调scanf时灯都会闪,同时把putchar里的发送注掉,就不再回显了。
       真奇怪,希望大佬给予指点
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-18 10:31:24
已绑定手机

40

主题

296

回帖

906

积分

高级会员

积分
906
发表于 2024-1-26 12:51:46 来自手机 | 显示全部楼层
如图就是全部代码,每次调用sacnf输入的时候自带一个输出效果,这是为什么啊 1706244567727.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5499

积分

荣誉版主

积分
5499
发表于 2024-1-27 10:46:17 | 显示全部楼层
没什么为什么啊

早期的输入(键盘) 和 输出(显示器) 是分开的, 分别 接 SIO 输入和输出.

输入的 字符, 通过 SIO 串口 送至 CPU, 显示器 上并无显示, 只能通过 putchar 函数, 送 显示器 回显 .

点评

哦!原来如此,以前真不知道还有这回事 本来是想把getkey putchar剥离出来分情况往不同地方重定向,这么一来还不太行,至少从sd卡里scanf一个数据总不能再调putchar原路写回去吧。 看来通用的io,还是得自己写个方法   发表于 2024-1-28 09:04
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-03-09 19:40:01

9

主题

328

回帖

4501

积分

荣誉版主

积分
4501
发表于 2024-1-27 17:10:04 | 显示全部楼层
https://developer.arm.com/docume ... nce/Reference/scanf
从Keil的文档来看,确实是调用了putchar的。
回显其实很常见,例如你使用Windows的cmd或其它命令行工具,你是能看到输入了什么命令的。如果去掉回显,那么你也看不见正在输入的指令。但是你使用stc-isp的串口工具,它也自带了回显功能,所以你会看到两遍指令。你如果使用了不自带回显的串口工具,那么就只能通过scanf带有的putchar来获取输入内容了。这就是调用putchar的用意。

点评

文档里果真说的有,一直没认真读过,,, 仔细想想回显串口监视器没法显示输入了话回显确实挺方便,但某些情况就不太好了。太可惜了,这么好的输入输出方法啊,,,   发表于 2024-1-28 09:12
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-18 10:31:24
已绑定手机

40

主题

296

回帖

906

积分

高级会员

积分
906
发表于 2024-1-28 09:13:42 来自手机 | 显示全部楼层
话说这个回显能屏蔽掉吗?
如果不行就只能用自己的io了
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-19 16:46 , Processed in 0.151167 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表