fgets () nie czeka na wejście
Napisałem następujący kod:
<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\n", line[0], line[1]); } } </code>
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.