Программирование >>  Структурное программирование 

1 ... 318 319 320 [ 321 ] 322 323 324 ... 342


При открытии файла для чтение (первым символом аргумента mode является символ г ) происходит ошибка, если файл не существует или данные не могут быть прочитаны. Открытие файла для обновление (первым символом аргумента mode является символ а ) означает, что все последующие записи в файл будут производится в текущий конец файла, независимо от вызовов функции fseek. В некоторых реализациях систем при открытии бинарного файла на обновление (вторым или третьим символом в параметре mode является символ Ь ), индикатор позиции файла первоначально может быть установлен за последними записанными данными; это происходит из-за добавления нулевого символа.

При открытии файла и режиме обновления (вторым или третьим символом в параметре mode является символ могут выполняться как операции

ввода, так и операции вывода. Однако, за операцией вывода не может непосредственно следовать операция ввода без промежуточного вызова функции fflush или функций изменения текущей позиции в файле (fseek, fsetpos или rewind), а за вводом данных не может непосредственно следовать вывод без обращения к функции изменения текущей позиции в файле, кроме случая, когда в результате операции ввода индикатор текущей позиции в файле был установлен на конец файла. В некоторых системах вместо открытия или создания тестового файла в режиме обновления может открываться или создаваться бинарный файл.

Открываемый поток полностью буферизуется в том и только в том случае, если он не относится к интерактивному устройству. Индикаторы конца файла и ошибки в открываемом потоке очищаются. Функция fopen возвращает указатель на объект, управляющий этим потоком. Если попытка открыть файл закончилась неудачей, fopen возвращает нулевой указатель.

FILE *freopen(const char *filename, const char *mode, FILE *stream);

Функция freopen открывает файл с именем в виде строки, на которую ссылается указатель filename, и связывает с ним поток, на который ссылается указатель stream. Параметр mode используется точно так же, как и в функции fopen.

Функция freopen сначала пытается закрыть файл, который связан с заданным потоком. Если закрытие файла произошло с ошибкой, то она игнорируется. Индикаторы конца файла и ошибки открываемого потока очищаются. В случае неудачного открытия файла freopen возвращает нулевой указатель. При удачном открытии файла freopen возвращает значение stream.

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

Функция setbuf эквивалентна функции setvbuf, вызываемой со значениями IOFBF для mode и BUFSIZ для size, или (если значение buf - нулевой указатель) со значением IONBF для mode. Функция setbuf не возвращает никакого значения.

int setvbuf(FILE *stream, char *buf, int mode, size t size);

Функция setvbuf может использоваться только после того, как поток, на который ссылается stream, был связан с открытым файлом, и прежде, чем над потоком будет выполняться какая-либо иная операция. Параметр mode определяет буферизацию stream следующим образом: значение IOFBF означает, что ввод-вывод будет полностью буферизованным; IOLBF означает, что ввод-вывод будет буферизоваться по строкам; IONBF - небуферизованный ввод-вывод. Если параметр buf не является нулевым указателем, массив, на который он ссылается, может использоваться вместо буфера, выделяемого функцией setvbuf. Размер этого массива определяется параметром size. Со-



держимое массива в любой момент времени не определено. Функция setvbuf возвращает нуль при успешном завершении или значение, отличное от нуля, если для параметра mode было указано недопустимое значение или если функция не может выполнить запрос.

int fprintf(FILE *stream, const char *format, ...);

Функция fprintf выводит данные в поток, на который ссылается параметр stream; вывод управляется строкой форматирования, на которую ссылается параметр format и которая задает способ преобразования заданных аргументов при выводе. Если аргументов меньше, чем указано в строке формата, поведение функции не определено. Если строка формата исчерпана в то время, как параметры еще остаются, то лишние параметры обычно вычисляются, но иногда могут игнорироваться. Функция fprintf заканчивает свою работу при достижении конца строки формата. См. главу 11, в которой приводится детальное описание спецификаций форматирования. Функция fprintf возвращает число выведенных символов или отрицательное значение, если произошла ошибка вывода.

int fscanf(FILE *stream, const char *fonnat, ...);

Функция fscanf вводит данные из потока, на который ссылается параметр stream, под управлением строки форматирования, на которую ссылается параметр format и которая определяет допустимые входные последовательности и задает способы преобразования при присваивании значений всех последующих аргументов, которые должны быть указателями на объекты, получающие форматированные входные данные. Если параметров недостаточно для строки формата, поведение функции не определено. Если строка формата исчерпана в то время, как параметры еще остаются, то лишние параметры обычно вычисляются, но иногда могут игнорироваться. См. главу 11, в которой приводится детальное описание спецификаций форматирования.

Функция fscanf возвращает значение EOF, если произошла ошибка ввода до выполнения форматирования. В противном случае, функция fscanf возвращает число введенных элементов данных, которое может быть меньше, чем предусмотрено списком параметров, или даже равно нулю в случае ошибок согласования типов.

int printf(const char *format, .. .) ;

Функция printf эквивалентна функции fprintf, если вызвать fprintf с параметром stdout и списком параметров функции printf. Функция printf возвращает число выведенных символов или отрицательное значение, если произошла ошибка вывода.

int scanf(const char *format, . ..) ;

Функция scanf эквивалентна функции fscanf, если вызвать fscanf с параметром stdin и списком параметров функции scanf. Функция scanf возвращает значение макроса EOF, если произошла ошибка ввода до форматирования данных. Иначе scanf возвращает число присвоенных значений, которое может быть меньше, чем предусмотрено, и даже равно нулю в случае ошибок согласования типов.

int sprintf (char *s, const char *format, ... );

Функция sprintf эквивалентна fprintf за исключением того, что результат вывода помещается не в поток, а в массив, на который ссылается параметр S. В конец строки записанных символов помещается нулевой символ; он не входит в подсчет числа символов, возвращаемого функцией. Результат копирования перекрывающихся объектов не определен. Функция sprintf воз-



вращает число символов, записанных в массив, не считая завершающего нулевого символа.

int sscanf(const char *s, const char *format, ...);

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

Функция sscanf возвращает значение макроса EOF, если произошла ошибка ввода до форматирования данных. Иначе функция sscanf возвращает число присвоенных значений, которое может быть меньше, чем предусмотрено, и даже равно нулю в случае ошибок согласования типов.

int vfprintf (FILE *stream, const char *fonaat, va list arg);

Функция vfprintf эквивалентна fprintf, в которой список параметров переменный длины заменен параметром arg, инициализированным макросом va start (и возможно измененный последующими вызовами va arg).

Функция vfprintf не вызывает макрос va end. Функция vfprintf возвращает число переданных символов или отрицательное значение, если произошла ошибка вывода.

int vprintf (const char *format, va list arg);

Функция vprintf эквивалентна функции printf, но вместо списка параметров переменной длины используется параметр arg, который должен быть инициализирован макросом va start (и может быть изменен последующими вызовами va arg). Функция vprintf не вызывает макрос va end. Функция vprintf возвращает число переданных символов или отрицательное значение, если произошла ошибка вывода.

int vsprintf(char *s, const char *format, va list arg);

Функция vsprintf эквивалентна функции sprintf, но вместо списка параметров переменной длины используется параметр arg, который должен быть инициализирован макросом va start (и возможно последующими вызовами va arg). Функция vsprintf не вызывает макрос va end. Результат копирования перекрывающихся объектов не определен. Функция vsprintf возвращает число символов, записанных в массив, не считая завершающего нулевого символа.

int fgetc(FILE *stream);

Функция fgetc берет из указанного параметром stream потока ввода очередной символ (если он имеется) как unsigned char, преобразует его к типу int и перемещает связанный с файлом индикатор текущей позиции в файле (если этот индикатор определен). Функция fgetc возвращает очередной символ из входного потока, указанного параметром stream. При достижении конца файла в потоке устанавливается индикатор конца файла и fgetc возвращает EOF. Если происходит ошибка чтения, то для потока устанавливается индикатор ошибки и fgetc возвращает EOF.

char *fgets(char *s, int n, FILE *stream);

Функция fgets считывает из потока stream в массив, на который ссылается параметр s, не более п-1 символа. Ввод символов прекращается, как только встретится символ новой строки (который сохраняется) или символ конца файла. За последним введенным в строку символом добавляется нулевой символ.



1 ... 318 319 320 [ 321 ] 322 323 324 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика