fgets () nie czeka na wejście
Napisałem następujący kod:
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]);
}
}
Mam plik wejściowy, który ma liczbę wierszy, a następnie liczba wierszy, którą chcę przetworzyć. Przeczytałem więc liczbę linii doN
. Potem używamfgets
aby linia była w stanie ją przetworzyć.
Jednak,fgets
wydaje się, że za pierwszym razem nie czeka na stdin. Zawsze otrzymuję dane wyjściowe-
, a następnie czeka na wejście. Oznacza to, że pierwsza iteracja pętli nie czeka na standardowe wejściefgets
i po prostu wypisuje dwa puste znaki oddzielone znakiem-
jako mójprintf
robi.
Dlaczego? Jak mogę zdobyćfgets
za każdym razem czekać na wejście? Mam wrażenie, że to kwestia wątku.