Книга: Основы программирования в Linux

fopen

fopen

Библиотечная функция fopen — это аналог низкоуровневого системного вызова open. Она используется в основном для файлов и терминального, ввода и вывода. Там, где нужно явное управление устройствами, больше подойдут системные вызовы, поскольку они устраняют потенциальные нежелательные побочные эффекты применения библиотек, например, в случае буферизации ввода/вывода.

Далее приведена синтаксическая запись функции:

#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);

Функция fopen открывает файл, заданный в параметре filename, и ассоциирует с ним поток. Параметр mode описывает, как файл должен быть открыт. Он задается одной из следующих строк:

? "r" или "rb" — открыть только для чтения;

? "w" или "wb" — открыть для записи, укоротить до нулевой длины;

? "а" или "ab" — открыть для записи, дописывать в конец файла;

? "r+" или "rb+" или "r+b" — открыть для изменения (чтение и запись);

? "w+" или "wb+" или "w+b" — открыть для изменения, укоротить до нулевой длины;

? "a+" или "ab+" или "а+b" — открыть для изменения, дописывать в конец файла. Символ b означает, что файл бинарный, а не текстовый.

Примечание

В отличие от MS-DOS, системы UNIX и Linux не делают различий между текстовыми и бинарными файлами. UNIX и Linux обрабатывают их одинаково с эффективностью обработки бинарных файлов. Важно также учесть, что параметр mode должен быть строкой, а не символом. Всегда применяйте двойные кавычки, а не апострофы.

В случае успешного завершения функция fopen возвращает ненулевой указатель на структуру FILE*. В случае сбоя она вернет значение NULL, определенное в файле stdio.h.

Количество доступных потоков ограничено, как и число дескрипторов файлов. Реальное предельное значение содержится в определенной в файле stdio.h константе FOPEN_MAX и всегда не менее 8, а в ОС Linux обычно 16.

Оглавление книги


Генерация: 0.927. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз