Из файла считывается лишний символ - C (СИ)
Формулировка задачи:
Разбираю система ввода-вывод C. При чтении из текстового файла содержащего символы "123" и выводе файла в консоль, пока не встретится конец (проверка функций feof()) получаю лишний символ.
Откуда, он мог возникнуть?
Решение задачи: «Из файла считывается лишний символ»
textual
Листинг программы
// --- допустим файл fp пуст --- // пока не было попытки чтения значение !feof(fp) истинно while(!feof(fp)) { // файл пуст, fgetc вернёт EOF putchar( fgetc(fp) ); // выведет EOF // теперь !feof(fp) ложно, цикл завершится }
Объяснение кода листинга программы
В данном коде на языке C выполняется следующая последовательность действий:
- Проверка на конец файла - используется функция
feof(fp)
, которая возвращаетtrue
(1), если достигнут конец файла, иfalse
(0), если это не так. Это позволяет проверить, пуст ли файл.- Пока значение
feof(fp)
равноfalse
(0), что означает, что в файле еще есть данные, выполняется следующий блок кода.
- Пока значение
- Чтение символа из файла - используется функция
fgetc(fp)
, которая считывает один символ из файла и возвращает его.- Значение, прочитанное функцией
fgetc(fp)
, выводится на экран с помощью функцииputchar()
.
- Значение, прочитанное функцией
- Проверка на конец файла после чтения символа - после чтения символа из файла, снова проверяется значение
feof(fp)
. Если оно равноtrue
(1), значит, был достигнут конец файла, и цикл завершается. Таким образом, в цикле происходит последовательное чтение символов из файла до тех пор, пока не будет достигнут конец файла. Если файл пуст, то будет выведено несколько символов EOF.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д