Обнуление потока вывода из файла - C (СИ)
Формулировка задачи:
Есть файл с данными типа : 11 22 5 s 6 7
И такой кусочек кода:
Вопрос заключается в следующем: вызов getc(f) забирает первый символ из файла (это 11), но поскольку вызов этой функции существует лишь для проверки условия, я хочу далее (в цикле) при использовании fscanf начать считывание с тех же одинадцати (с первого символа из файла). Думал использовать fflush, но не помогло: все равно fscanf начинает считывание со следующего символа (то есть 22). Подскажите, пожалуйста, как выбраться из этой ситуации
FILE *f = fopen(name, "r"); if (f == NULL) return 1; if (getc(f) == EOF) return 2; while (feof(f) == 0) { fscanf(f, "%i", &x[i]); ......
Решение задачи: «Обнуление потока вывода из файла»
textual
Листинг программы
#include <stdio.h> int main(){ freopen("1.txt","r",stdin); int x; scanf("%d", &x); printf("%d\n", x); fclose(stdin); freopen("1.txt","r",stdin); while (scanf("%d", &x) != EOF){ printf("%d ", x); } return 0; }
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h, который содержит функции для работы с потоком ввода/вывода
- Закрываем стандартный поток ввода (stdin) и открываем файл 1.txt для чтения
- Считываем из файла целочисленное значение в переменную x с помощью функции scanf
- Выводим значение x на экран с помощью функции printf
- Закрываем файловый поток (stdin)
- Открываем файл 1.txt для чтения
- В цикле while считываем из файла целочисленные значения в переменную x с помощью функции scanf
- Выводим значение x на экран с помощью функции printf, добавляя пробел в конце
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д