Используйте rewind()
, чтобы вернуться к началу файла:
for (i = 0; i < 5; i++) {
rewind(in);
while (fscanf(in, "%d", &number)
.......
Обратите внимание, что это решение работает только в том случае, если поток доступен для поиска.Если он связан с обычным файлом, либо открытым fopen
, либо перенаправлением оболочки, он должен быть доступен для поиска, но если он связан с терминалом, каналом или каким-либо другим символьным устройством, rewind()
может дать сбой.Вы не можете проверить это с помощью rewind()
, но есть альтернатива:
if (fseek(in, 0L, SEEK_SET)) {
fprintf(stderr, "cannot rewind inut stream\n");
exit(1);
}
Более надежный подход заключается в сохранении значений, считанных fscanf()
, чтобы избежать поиска.