Я написал следующий код:
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
, похоже, не ждет stdin в первый раз. Я всегда получаю вывод -
, а затем жду ввода. Это означает, что первая итерация цикла не ожидает стандартного ввода в fgets
и просто выводит два пустых символа, разделенных -
, как это делает мой printf
.
Это почему? Как я могу заставить fgets
каждый раз ждать ввода? Я чувствую, что это проблема с потоками.