Обнуление потока вывода из файла - 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, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д