我写了下面的代码:与fgets()不等待输入
int N;
scanf("%d", &N);
int i;
for (i = 0; i < N; i++) {
char line[LINE_MAX];
if (fgets(line, LINE_MAX, stdin) != NULL) {
// do stuff with line here
printf("%c - %c\n", line[0], line[1]);
}
}
我有拥有它的行数的输入文件,然后行的这个数字其次,我要处理。所以我读到N
的行数。在那之后,我使用fgets
来让这条线能够处理它。
然而,fgets
似乎并没有等待标准输入的第一次。我总是得到-
的输出,然后等待输入。意思是,循环的第一次迭代,它不是在fgets
等待标准输入和刚打印出由-
分开,我printf
做两个空字符。
这是为什么?我怎样才能让fgets
每次都等待输入?我觉得这是一个线程问题。
但这仍然留下了新行未读,这意味着它的()'通过以下'与fgets读的第一件事,这通常不是什么打算。 – geekosaur 2012-04-14 20:46:58