c语言

您所在的位置:网站首页 scanf函数会读取回车吗 c语言

c语言

2024-07-11 09:02| 来源: 网络整理| 查看: 265

做题的时候有时会用到getchar()接收换行符,然而让人困惑的是一般使用scanf("%s", str)这样的形式读取字符串的时候似乎并没有考虑这个问题。网上通常会给你讲大道理缓冲区啥的,然后听懂后自己得不得的出结论全看天赋(摊手),所以在这里直接下结论了:

1.一个scanf后的确有回车在缓冲区里,但是scanf("%s", str)这样的不会把之前留下的换行符读取掉(就是无视了)。这就是平时用%s解决“一个数字,后面跟N个字符串”这样的输入没有问题的原因。

2.相对的,如果用%c,那就要考虑接收换行符的事情了,在这里插入图片描述 在这里插入图片描述

例如这样的话,在缓冲区的空格就会被读取,所以两个scanf中间需要getchar()。(再次吐槽某些实验,贴出代码一长串还要自己先找关键代码段)

3.gets()也是会读取之前留下来的换行符的,所以也需要一个getchar()。类似实验可以参照2的截图,设置断点或者用printf查看输出结果都行。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3