我写了以下代码:
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似乎不是第一次等待标准输入。我总是得到 的输出-,然后它等待输入。意思是,循环的第一次迭代,它不是在等待标准输入,而是像 myfgets一样打印出两个由分隔的空字符。-printf
这是为什么?我怎样才能fgets每次都等待输入?我觉得这是一个线程问题。