I wrote the following code:
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
", line[0], line[1]);
}
}
I have an input file which has the number of lines it has, and then that number of lines followed which I want to process. So I read in the number of lines into N
. After that, I use fgets
to get the line to be able to process it.
However, fgets
does not seem to wait for a stdin the first time. I always get output of -
, and then it waits for input. Meaning, the first iteration of the loop, it is not waiting for standard input at fgets
and just prints out two empty characters separated by -
as my printf
does.
Why is that? How can I get fgets
to wait for input each time? I feel like it is a threading issue.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…