关于c语言scanf函数中格式化输入中加入空格的一个问题

您所在的位置:网站首页 c语言怎么打空格 关于c语言scanf函数中格式化输入中加入空格的一个问题

关于c语言scanf函数中格式化输入中加入空格的一个问题

2023-11-12 09:28| 来源: 网络整理| 查看: 265

考虑如下一小段程序:

#include int main() { int i = 0; int num[5]; for(i = 0;i < 5;i++){ scanf("%d ",&num[i]); printf("num[%d]:%d\n",i,num[i]); } return 0; }

当输入序列是:1 2 3 4 5时,还是什么样的情况呢? 这里写图片描述 在我进行测试的时候发现,我已经输入5个数了,但是scanf的读入并没有结束,读入光标也一直在闪动。这就很奇怪了,不是读入五个数字吗?不是应该输入结束了吗?仔细检查代码,我们可以发现,并不是我们在哪要多读入一个数字,那是为什么呢?测试一下!既然它光标还在闪动,那再输入一个数进去看看, 这里写图片描述 我们发现在输入一个数字就好了,而且就是读入我们输入的前5个数字,那就很奇怪了,明明已经读到了可为什么还不结束输入呢?再仔细检查一遍代码,其实问题就出现在一个空格上!!!观察这段代码:

scanf("%d ",&num[i]);

在 “%d ” 里是一个%d加一个空格,这是程序读入数据时的格式,这个格式是什么意思呢? 这个格式的意思是说是在读完一个整数后,格式中的空格还需要匹配一次有效的输入,就是需要再读一个整数。所以也就造成了输入6个数据只读取了5个。所以把格式中的空格去除即可。



【本文地址】


今日新闻


推荐新闻


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