scanf读入一行数据, 并将其中的数字录入数组问题
一个看似简单的实验(或许真的很简单
), 输入一组数, 用空格(或多个空格)隔开, 并录入到一个数组里面:
程序代码:
#include <stdio.h>
#define MAXLENGTH 100000
int main()
{
int dataBuffer[MAXLENGTH];
int i = 0, ktest = 0, count = 0;
while (scanf("%d", &dataBuffer[i++]))
{
if (getchar() == '\n')
break;
}
count = i;
///////////////////////////////////////
for (ktest = 0; ktest < count; ktest++)
{
printf("%d ", dataBuffer[ktest]);
}
printf("\n\n");
///////////////////////////////////////
return 0;
}
比如我这输入
1 1 1 1 12 12
输出是没问题的,
但是如果我在后面加个空格就跪了

1 1 1 1 12 12
光标到了下一行, 可以继续输入. 也就是说getchar()把后面的空格吸收了而不是'\n',
不是说scanf忽略所有空格TAB换行吗? 请问这里是否有理解问题,
那如果scanf仅仅是忽略空格TAB换行而不去吸收它,
这种情况源程序代码该如何修改? 实在是绞尽脑汁不得其解.
[此贴子已经被作者于2016-2-28 12:12编辑过]









