Функція fopen () відкриває для використання потік, пов'язує файл з даними потоком і потім повертає покажчик FILE на даний потік. Найчастіше файл рас-розглядати як дисковий файл. Функція fopen () має наступний прототип:
FILE * fopen (const char * имя_файла, const char * режим);
де режим вказує на рядок, що містить бажаний режим відкриття файлу. Допустимі зна-чення для режим в Borland С ++ показані в таблиці. имя_файла має бути рядком симво-лов, що надає коректне ім'я файлу операційній системі, і може містити указу-ня шляху.
Функція fopen () повертає покажчик базового типу FILE. Даний покажчик ідентифікує файл і використовується більшістю функцій файлової системи. Його ніколи не слід змінювати самостійно. Функція повертає нульовий покажчик, якщо файл не може бути відкритий.
Як показує таблиця, файл може бути відкритий або в текстовому, або в двійковому режи-ме. У текстовому режимі при введенні послідовність повернення каретки і переведення рядка Радіо-ється в символ нового рядка. При виведенні справедливо зворотне: символ нового рядка Радіо-ється в повернення каретки і переведення рядка. У довічних файлах такого перекладу не відбувається. Коли в аргументі режиму не вказані ні t, ні b, то статус файлу текстовий / двійковий визначаються-ється значенням глобальної змінної _fmode, визначеної в Borland С ++. За замовчуванням fmode встановлена в О_ТЕХТ, тобто встановлюється текстовий режим. Якщо встановити _fmode в О_BINARY, то файли будуть відкриватися в довічним режимі. (Ці макроси визначені в fcntl.h.) Природно, використання явно зазначених t або b усуває ефекти, пов'язані зі змінною _fmode. Крім цього, _fmode характерна тільки для продуктів Borland. Вона не визначена в системі вводу / виводу ANSI С.
Якщо необхідно відкрити файл з ім'ям test на запис, то слід написати:
fp = fopen ( "test", "w");
де fp - це змінна типу FILE *. Проте зазвичай можна побачити наступне:
if ((fp = fopen ( "test", "w")) == NULL) puts ( "Can not open file.");
exit (1);
>
Даний метод дозволяє виявити помилки при відкритті файлу, наприклад, наявність захисту від запису або відсутність вільного місця на диску.
Якщо fopen () використовується для відкриття файлу на запис, то будь-який раніше існуючий файл з вказаним ім'ям буде знищений. Якщо файлу з вказаним ім'ям не існує, то він буде створений.
Якщо необхідно дописати інформацію в кінець файлу, слід використовувати режим а (додавання). Якщо файл не існує, то він буде створений.
Відкриття файлу на читання вимагає наявності файлу. Якщо файл не існує, то буде повернуто помилку. Якщо файл відкритий для операції читання / запису, то він не видаляється при наявності, а якщо файл не існує, то він створюється.
Таблиця: Допустимі значення режимів