CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
fopen
fopen
Функция Открывает поток. Синтаксис #include <stdio.h> FILE * fopen(char * filename, char * type); Файл, содержащий stdio.h прототип Описание Функция fopen открывает файл, именованный параметром filename и связывает его с соответствующим потоком stream. Функция fopen в качестве результата возвращает адресный указатель, который будет идентифицировать поток stream в последующих операциях. Строка mode, используемая в функции fopen может принимать следующие значения: r - открытие файла только для чтения; w - создание файла для записи; а - присоединение; открытие для записи в конец файла или создание для записи, если файл не существует; r+ - открытие существующего файла для обновления (чтения и записи); w+ - создание нового файла для изменения; a+ - открытие для присоединения; открытие (или создание, если файл не существует) для обнов- ления в конец файла. Если данный файл открывается или создается в текстовом режиме, вы можете приписать символ t к значению параметра type (rt, w+t, и т.д.); аналогично, для спецификации бинарного режима вы можете к значению параметра type добавить символ b (wb,a+b, и т.д.). Если в параметре type отсутствуют символы t или b, режим будет определяться глобальной переменной _fmode. Если переменная _fmode имеет значение O_BINARY, файлы будут открываться в бинарном режиме, иначе, если _fmode имеет значение O_TEXT, файлы открываются в текстовом режиме. Данные константы O_... определены в файле fcntl.h. При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть выполнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредственно за вводом без вмешательства функций fseek или rewind, а также ввод, без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF). Возвращаемое При успешном завершении fopen возвращает значение указатель на открытый поток stream. В случае ошибки функция возвращает нуль (NULL). Переносимость fopen поддерживаeтся на системах UNIX и опреде- лена в ANSI C. Кроме этого, она описана в книге Kernighan & Ritchie. Смотрите также creat, dup, fclose, fdopen, ferror, _fmode (пере- менная), fread, freopen, fseek, fwrite, open, rewind, setmode, setmode. Пример: /* Программа создает дубль AUTOEXEC.BAT */ #include <stdio.h> int main(void) { FILE *in, *out; if((in = fopen("\\AUTOEXEC.BAT","rt"))==NULL) { fprintf(stderr, "Не могу открыть файл \n"); return(1); } if((out = fopen("\\AUTOEXEC.BAK","wt"))==NULL) { fprintf(stderr, "Не могу открыть выходной файл \n"); return(1); } while(!feof(in)) fputc(fgetc(in), out); fclose(in); fclose(out); return 0; }