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编辑过]