Операционная система MS DOS (том 2)


Буферизация ввода/вывода - часть 8


#include <stdio.h> main() { printf("Hello, world!"); }

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

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

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

int fscanf(FILE *stream, char *format [,arg]...);

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

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

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

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

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

void setbuf(FILE *stream, char *buffer);

Параметр buffer должен указывать на подготовленный пользователем массив, имеющий размер BUFSIZ байтов. Константа BUFSIZ описана в файле stdio.h.

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

int setvbuf(FILE *stream, char *buffer, int mode, size_t size);

Параметр stream должен указывать на открытый поток, причем для этого потока до вызова функции setvbuf()

нельзя выполнять операции чтения/записи.

Параметр buffer должен указыват на подготовленный программой буфер размером size

байтов. Этот буфер будет использоваться для работы с потоком stream.

Параметр mode может иметь значения _IOFBF, _IOLBF, _IONBF. Если mode равно _IOFBF или _IOLBF, параметр size указывает размер буфера. Если параметр mode равен _IONBF, буферизация не используется, парметры buffer и size




- Начало -  - Назад -  - Вперед -