Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с файловой системой DOS.doc
Скачиваний:
3
Добавлен:
16.11.2019
Размер:
299.01 Кб
Скачать

Int fgetc(file *stream);

Эта функция возвращает считанный из файла и преобразованный к типу int байт из потока stream. После чтения байта текущая позиция в файле увеличивается на единицу.

При достижении конца файла или в случае ошибок функция fgetc() возвращает значение EOF. Однако для проверки на ошибку или конец файла лучше пользоваться специальными функциями ferror() и feof(). Если вы открыли файл в двоичном режиме, единственный способ определить момент достижения конца файла - использовать функцию feof(), так как значение константы EOF может находиться в любом месте двоичного файла.

Для работы со строками предназначены функции fputs() и fgets().

Функция fputs() предназначена для вывода строки в файл, открытый потоком:

Int fputs(char *string, file *stream);

Первый параметр определяет выводимую строку, второй - файл, в который эта строка выводится. Двоичный ноль, закрывающий строку, в выходной файл не копируется. После вывода строки содержимое текущего указателя позиции увеличивается на количество записанных байтов.

Для ввода строк из текстового файла удобна функция fgets():

Int fgets(char *string, int n, file *stream);

Функция читает байты из потока stream и записывает их в буфер string до тех пор, пока не произойдет одно из двух событий - будет прочитан символ новой строки '\n' или количество прочитанных символов не будет равно n-1.

После того, как байты будут прочитаны в буфер, в конец образованной из этих байтов строки функция записывает двоичный ноль. Если был прочитан символ новой строки '\n', он тоже записывается в буфер.

Для анализа достижения конца файла или ошибок необходимо использовать функции feof() и ferror().

Для форматного вывода в файл содержимого переменных удобно использовать функцию fprintf():

Int fprintf(file *stream, char *format [,arg]...);

Эта функция аналогична хорошо известной вам функции форматного вывода на экран printf(), с которой обычно начинают изучение языка программирования Си. Вспомните такую программу:

#include <stdio.h>

main() {

printf("Hello, world!");

}

Функция fprintf() имеет дополнительно один параметр - stream, который определяет выходной файл.

После завершения работы функция возвращает количество записанных байтов или отрицательную величину, если при записи произошла ошибка.

Для форматного ввода информации из файла можно использовать функцию fscanf(), аналогичную известной вам функции scanf():

Int fscanf(file *stream, char *format [,arg]...);

Эта функция читает данные, начиная с текущей позиции в потоке stream, в переменные, определенные аргументами arg. Каждый аргумент должен являться указателем на переменную, соответствующую типу, определенному в строке формата format.

Функция fscanf() возвращает количество успешно считанных и преобразованных в указанный формат полей. Те поля, которые были считаны, но не преобразовывались, в возвращаемом функцией значении не учитываются.

При достижении конца файла функция возвращает значение EOF. Если функция возвратила нулевое значение, это означает, что преобразование полей не производилось.

Рассмотрим теперь функции, управляющие буферизацией для потокового ввода/вывода.

Функция setbuf() позволяет вам заменить системный буфер на свой собственный: