鱼C论坛

 找回密码
 立即注册
查看: 1772|回复: 8

[已解决]scanf和getchar的关系是什么???

[复制链接]
发表于 2021-4-13 22:18:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 s120lan 于 2021-4-13 22:26 编辑

当我写程序时,有scanf和没有scanf时,getchar计算的字符个数为什么不一样呀!!!!!! QQ图片20210413222521.png QQ图片20210413222431.png
最佳答案
2021-4-13 22:34:07
2个函数没关系。搞懂2个函数的用法就行了。
scanf是从键盘缓冲区(也就是你输入的字符串中)获取需要的内容。
比如:
scanf("%d", &a);
你输入: 123a
那么scanf取的的是123。
后面还有 "a\n" a和你的回车仍然在缓冲区中。

getchar是从键盘缓冲区中获取一个字符。
比如:
你输入: 123a
getchar
那么getchar取的值是1,缓冲区留 下"23a\n"
再getchar取的值是2,,缓冲区留 下"3a\n"
......

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-13 22:39:32 From FishC Mobile | 显示全部楼层
但是我这个程序问题出在哪里呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-13 22:41:12 From FishC Mobile | 显示全部楼层
ba21 发表于 2021-4-13 22:34
2个函数没关系。搞懂2个函数的用法就行了。
scanf是从键盘缓冲区(也就是你输入的字符串中)获取需要的内 ...

我这个程序问题是在哪里呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-13 23:08:21 From FishC Mobile | 显示全部楼层
我已经弄懂了,scanf()在读取一串输入的字符串时并不能全部读入,我这个题scanf只读取了i就停止了。这是因为scanf()开始读取输入以后,会在遇到的第一个空白字符空格、制表符(tab)或换行符(\n)出停止读取。然后getchar就是从空格到最后,所以是9个字符。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-19 03:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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