Відкриття файлу, програмування на c і ​​c

Функція 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 () використовується для відкриття файлу на запис, то будь-який раніше існуючий файл з вказаним ім'ям буде знищений. Якщо файлу з вказаним ім'ям не існує, то він буде створений.

Якщо необхідно дописати інформацію в кінець файлу, слід використовувати режим а (додавання). Якщо файл не існує, то він буде створений.

Відкриття файлу на читання вимагає наявності файлу. Якщо файл не існує, то буде повернуто помилку. Якщо файл відкритий для операції читання / запису, то він не видаляється при наявності, а якщо файл не існує, то він створюється.

Таблиця: Допустимі значення режимів

Схожі статті