Книга: Основы программирования в Linux
fopen
fopen
Библиотечная функция fo
pen — это аналог низкоуровневого системного вызова 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.
- ПРОСТЫЕ ПРОГРАММЫ ЧТЕНИЯ ФАЙЛА: fopen( ), fclose( ), getc( ) и putc( )
- 8.5 Пример. Реализация функций fopen и getc
- Открытие файла: fopen( )
- 3.8.17 efopen.c
- Files
- Miscellaneous
- 3.8.70 zap.c
- Функции fprintf( ) и fscanf( )
- 8.4 Произвольный доступ (lseek)
- 7.5 Доступ к файлам
- Копирование файлов с использованием стандартной библиотеки С
- Внутрипроцессные серверы