Что такое feof stdin
Перейти к содержимому

Что такое feof stdin

  • автор:

Функция feof

Функция feof проверяет, достигнут ли конец файла, связанного с потоком, через параметр filestream . Возвращается значение, отличное от нуля, если конец файла был действительно достигнут.
Вызов данной функции, как правило, выполняется после выполнения предыдущей операции с потоком, например операции считывания, которая постепенно двигает внутренний указатель файла в конец.
Дальнейшие операции с файлом, после достижения его конца не будут выполняться до тех пор, пока внутренний указатель не будет сдвинут назад, функциями fseek или fsetpos . Таким образом индикатор положения внутреннего указателя будет иметь новое значение, отличное от EOF .

Параметры:

  • filestream
    Указатель на объект типа FILE , идентифицируемый поток.

Возвращаемое значение

Если достигнут конец файла, функция возвращает ненулевое значение.
В противном случае возвращается нулевое значение.

Пример: исходный код программы

//пример использования feof #include #include int main() < FILE * ptrFile = fopen("file.txt", "rb"); long ctr = 0; // счетчик символов if (ptrFile == NULL) perror("Ошибка открытия файла"); else < while ( !feof(ptrFile) ) // пока не конец файла < fgetc(ptrFile); // прочитать символ из файла ctr++; >fclose (ptrFile); // закрыть файл std::cout return 0; >

Пример работы программы

Этот код открывает файл с именем file.txt , и подсчитывает количество символов, которое он содержит, считывая их посимвольно. В итоге, выводится общее количество байтов.

_fgetchar , _fgetwchar

_fgetchar возвращает символ, считывающийся как или int возвращающийся EOF , чтобы указать ошибку или конец файла. _fgetwchar возвращается как wint_t широкий символ, соответствующий символу чтения или возврата WEOF символов, чтобы указать ошибку или конец файла. Для обеих функций следует использовать feof или ferror , чтобы различать ошибки и конец файла.

Замечания

Эти функции считывают один символ из stdin . Функция затем увеличивает указатель связанного файла (если определен), чтобы он указывал на следующий символ. Если поток находится в конце файла, для него устанавливается индикатор конца файла.

_fgetchar эквивалентна fgetc( stdin ) . Он также эквивалентен getchar , но реализуется только как функция, а не как функция и макрос. _fgetwchar — версия _fgetchar с расширенными символами.

Эти функции несовместимы со стандартом ANSI.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью «Глобальное состояние» в CRT.

Сопоставления подпрограмм универсального текста

Подпрограмма Tchar.h _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_fgettchar _fgetchar _fgetchar _fgetwchar

Требования

Функция Обязательный заголовок
_fgetchar
_fgetwchar или

Консоль не поддерживается в приложениях универсальная платформа Windows (UWP). Стандартные дескрипторы потока, связанные с консолью, stdin stdout и stderr должны быть перенаправлены, прежде чем функции времени выполнения C могут использовать их в приложениях UWP. Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_fgetchar.c // This program uses _fgetchar to read the first // 80 input characters (or until the end of input) // and place them into a string named buffer. // #include #include int main( void ) < char buffer[81]; int i, ch; // Read in first 80 characters and place them in "buffer": ch = _fgetchar(); for( i=0; (i < 80 ) && ( feof( stdin ) == 0 ); i++ ) < buffer[i] = (char)ch; ch = _fgetchar(); >// Add null to end string buffer[i] = '\0'; printf( "%s\n", buffer ); > 
 Line one. Line two.Line one. Line two. 

int feof(FILE *stream)

Макросом feof() контролируется указатель положения в файле — для того, чтобы установить, достигнут ли конец файла, связанный с потоком stream. Если указатель положения в файле нахо­дится в конце файла, то возвращается ненулевое значение; в противном случае возвращается нуль.

Если конец файла был уже достигнут, то последующие операции чтения будут возвращать EOF до одного из двух событий: вызова rewind() или смещения указателя положения в файле с помо­щью fseek().

Макрос особенно полезен при работе с двоичными файлами, поскольку маркер конца файла — также допустимое двоичное целое число. Для определения момента достижения конца файла необходимо в явной форме вызывать feof(), а не просто проверять переменную, возвращаемую, например, функцией getc().

Что такое feof stdin

stdio(3) библиотека функций стандартного ввода-вывода

ОБЗОР

#include FILE *stdin;
FILE *stdout;
FILE *stderr;

ОПИСАНИЕ

Библиотеки стандартного ввода-вывода предоставляют простой и эффективный интерфейс буферизируемого потока ввода-вывода. Ввод и вывод представляется логическим потоком данных, а физические характеристики ввода-вывода скрываются. Далее приводится список функций и макросов; более подробная информация находится в соответствующих страницах. Поток соотносится с внешним файлом (который также может быть физическим устройством) при открытии файла. Такое открытие может вызвать создание нового файла. Создание существующего файла вызовет потерю его содержимого. Если для файла поддерживаются запросы позиционирования (например для файла на диске, а не терминал), то индикатор позиции в файле, соответствующий потоку, устанавливается в начало файла (нулевой байт), если только файл не открыт в режиме добавления. Если используется режим добавления, то не определено, будет ли индикатор позиции в файле будет указывать на конец файла. Индикатор позиции изменяется при последующих запросах чтения, записи и изменения индикатора. Все операции ввода осуществляются так, как если бы все символы последовательно считывались вызовом функции fgetc(3); а вывод осуществляется, как если бы все символы последовательно записывались вызовом функции fputc(3). Соотношение потока с файлом прекращается при закрытии файла. Перед прекращением потоки вывода очищаются (flushed) (содержимое незаписанного буфера передаётся в системное окружение). Значение указателя на объект FILE после закрытия файла становится неопределённым (мусорным). Впоследствии файл может быть открыт ещё раз той же самой или другой программой, а его содержание может быть восстановлено или изменено (если можно перейти в его начало). Если основная функция завершает работу и возвращает значения своему родителю или если вызывается функция exit(3), то перед закрытием программы закрываются все открытые файлы (и, следовательно, очищаются все потоки вывода). Другие методы закрытия программ, например, abort(3), не всегда приводят к корректному закрытию файлов. При запуске программы предопределяются три текстовых потока, которые не следует открывать явно: стандартный ввод (standard input) (для чтения условного ввода), стандартный вывод (standard output) (для записи условного вывода) и стандартный поток ошибок (standard error) (для вывода диагностики). Сокращённые названия потоков: stdin, stdout и stderr. При открытии, стандартный поток ошибок буферизируется не полностью; стандартные потоки ввода и вывода полностью буферизируются только при условии, что они не ссылаются на какое-либо интерактивное устройство. Потоки вывода, ссылающиеся на устройства терминала, по умолчанию буферизируются построчно; ожидающие в таких потоках данные записываются автоматически всякий раз при чтении из потока ввода, ссылающегося на терминал. В случаях, когда после вывода на терминал части строки объём производимых вычислений велик, необходимо выполнять fflush(3), чтобы появилась часть строки до вычислений. Библиотека stdio является частью библиотеки libc, а функции автоматически загружаются компиляторами cc(1) и pc(1) по мере надобности. В разделе СИНТАКСИС справочных страниц указано какие файлы заголовков необходимо использовать, как выглядят объявления функций и какие внешние переменные представляют интерес для работы. В списке далее перечислены макросы; эти имена не могут быть использованы повторно без предварительного удаления их определений с помощью #undef: BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid, L_ctermid, L_tmpnam, NULL, SEEK_END, SEEK_SET, SEEK_CUR, TMP_MAX, clearerr, feof, ferror, fileno, getc, getchar, putc, putchar, stderr, stdin, stdout. Для feof, ferror, clearerr, fileno, getc, getchar, putc, и putchar существуют версии в виде функций, которые используются если определения макросов были удалены явно.

Список функций

Функция Описание
clearerr проверяет и сбрасывает состояние потока
fclose закрывает поток
fdopen функции открытия потока
feof проверяет и сбрасывает состояние потока
ferror проверяет и сбрасывает состояние потока
fflush сбрасывает данные потока
fgetc считывает следующий символ или слово из потока ввода
fgetpos считывает позицию в потоке
fgets считывает строку из потока
fileno возвращает целочисленный дескриптор аргумента потока
fopen функции открытия потока
fprintf вывод по формату
fpurge сбрасывает данные потока
fputc выводит символ и слово в поток
fputs выводит строку в поток
fread считывает двоичные данные из потока ввода-вывода
freopen функции открытия потока
fscanf форматирует ввод
fseek устанавливает позицию в потоке
fsetpos устанавливает позицию в потоке
ftell устанавливает позицию в потоке
fwrite записывает двоичные данные потока ввода-вывода
getc считывает следующий символ или слово из потока ввода
getchar считывает следующий символ или слово из потока ввода
gets считывает строку из потока
getw считывает следующий символ или слово из потока ввода
mktemp создаёт имя временного файла (уникальное)
perror системные сообщения об ошибках
printf вывод по формату
putc выводит символ или слово в поток
putchar выводит символ и слово в поток
puts выводит строку в поток
putw выводит символ и слово в поток
remove удаляет запись из каталога
rewind устанавливает позицию в потоке
scanf форматирует ввод
setbuf операции буферизации потока
setbuffer операции буферизации потока
setlinebuf операции буферизации потока
setvbuf операции буферизации потока
sprintf вывод по формату
sscanf форматирует ввод
strerror системные сообщения об ошибках
sys_errlist системные сообщения об ошибках
sys_nerr системные сообщения об ошибках
tempnam процедуры с временными файлами
tmpfile процедуры с временными файлами
tmpnam процедуры с временными файлами
ungetc возвращает символ в поток ввода
vfprintf вывод по формату
vfscanf форматирует ввод
vprintf вывод по формату
vscanf форматирует ввод
vsprintf вывод по формату
vsscanf форматирует ввод

СООТВЕТСТВИЕ СТАНДАРТАМ

Библиотека stdio соответствует C89.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *