目录
发现问题
什么是空白符呢?
解决方法
在今天学习中发现一件有趣的事,如图
int main()
{
int arr[10] = { 0 };
int i = 0;
while (i < 10)
{
scanf("%d ", &arr[i]);
i++;
}
for ( i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
在这段代码中我本意是给数组赋10个值再打印出来,但是在实现的时候发现总是要输入11个值才能让第一段循环停下
这是怎么回事呢?
原来是因为
scanf("%d ", &arr[i])
中的%d后面加了一个空格,而空格是空白符的一种。
什么是空白符呢?
空格、制表符(t v)、换行符(n)、空字符( )等统称为空白符(space character),它们只用来占位,并没有实际的内容。
空格、制表符(t v)、换行符(n)、空字符( )等统称为空白符(space character),它们只用来占位,并没有实际的内容。
用空白符结尾时,scanf会跳过空白符去读下一个字符,scanf在之前只读了10个数给数组初始化,后面必须多读一个数来作为结束信号,所以你必须再输入一个数。
同理如果你用
scanf("%dn",&a)
也会出现同样的问题。
解决方法
删掉空白符即可。
scanf("%d", &arr[i]);



