我想知道为什么当我将此函数用于具有无限循环的数组索引时,scanf想要获得比'num'更多的数字。
5 //数组索引的编号。
1 2 3 4 5 //我输了5个数字,因为我将索引号设置为5.但是..
6 //我必须输入另一个数字才能完成scanf的工作。
1 2 3 4 5 //数组中的数字。 6已经消失了。
这是我要测试的代码。
#include <stdio.h>
int main()
{
int num = 0;
int n[100000] = { 0 };
while (1) {
scanf("%d ", &num);
if (num > 100000 || num <= 0) {
printf("Input a number again. \n");
}
else {
for (int i = 0; i < num; i++) {
scanf("%d ", &n[i]);
}
// Test
for (int k = 0; k < num; k++) {
printf("%d ", n[k]);
}
break;
}
}
return 0;
}
答案 0 :(得分:1)
我不确定,但我认为问题是由于您在scanf函数中的%d之后添加了额外的空格字符。尝试删除该空格字符并查看输出。
答案 1 :(得分:1)
问题在于您的scanf
,在%d之后删除了额外的空格,它会正常运行。有关详细信息,请查看此link 。