Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции для открытия-закрытия файла

Функции для работы с файлами

Функции для работы с файлами размещены в библиотеках stdio.lib (#include < stdio.h >) и io.lib (#include < io.h >). Каждый файл должен быть связан с некоторым указателем. Этот указатель имеет тип FILE и используется во всех операциях с файлами.

Формат объявления указателя на файл следующий:

FILE *указатель на файл;

Например:

FILE *fl1, *fl2;

Указатель содержит адрес структуры, включающей в себя различные сведения о файле, например, его имя, статус и указатель на начало файла. Чтобы выполнять в файлах операции чтения и записи, программы должны использовать указатели соответствующих файлов.

Макрос NULL определяет пустой указатель.

Макрос EOF, часто определяемый как -1, является значением, возвращаемым тогда, когда функция ввода пытается выполнить чтение после конца файла.

Макрос FOPEN_MAX определяет целое значение, равное максимальному числу одновременно открытых файлов.

 

Прототип функции:

FILE * fopen (const char * имя_файла,

const char * режим_открытия);

Функция открывает файл и связывает его с потоком. Возвращает указатель на открытый файл.

Имя_файла — это указатель на строку символов, в которой хранится имя файла и путь к нему. Например: “d:\\work\\lab2.dat”.

режим_открытия это указатель на строку символов, в которой указывается режим открытия файла. Допустимы режимы указаны в таблице:

 

r Открыть текстовый файл для чтения. Если файл с указанным именем отсутствует, то возникает ошибка
w Создать текстовый файл для записи. Если файл с указанным именем уже существует, то прежняя информация уничтожается
a Добавить информацию в конец текстового файла
rb Открыть двоичный файл для чтения. Если файл с указанным именем отсутствует, то возникает ошибка
wb Создать двоичный файл для записи. Если файл с указанным именем уже существует, то прежняя информация уничтожается
ab Добавить информацию в конец двоичного файла
r+ Открыть текстовый файл для чтения/записи
w+ Создать текстовый файл для чтения/записи
a+ Добавить в конец текстового файла или создать текстовый файл для чтения/записи
r+b или rb+ Открыть двоичный файл для чтения/записи
w+b или wb+ Создать двоичный файл для чтения/записи
a+b или ab+ Добавить в конец двоичного файла или создать двоичный файл для чтения/записи

 

По умолчанию файл открывается в текстовом режиме.

Если при открытии файла произошла ошибка, функция fopen возвращает значение NULL.

Для создания файла можно записать:

FILE *fl;

fl = fopen("lab2.dat","w”);

Более грамотно бедут:

FILE *fl;

if ((fl = fopen("lab2.dat","w"))==NULL)

{

cout << "Oshibka pri sozdanii"<<endl;

return 1;

}

Такой алгоритм позволяет обнаружить любую ошибку, возникающею при создании файла.

Для исключения ошибки, возникающей при открытии несуществующего файла, можно использовать конструкцию:

FILE *fl;

if ((fl = fopen("lab2.dat","r"))==NULL)

{

fl = fopen("lab2.dat","w");

}

При попытке открыть несуществующий файл в режиме дозаписи, он будет автоматически создан.

Разница между режимами r+ и w+ состоит в том, что если файл не существует, то в режиме открытия r+ он создан не будет, а в режиме w+ будет создан! Если файл уже существует, то открытие его в режиме w+ приведет к утрате его содержимого, а в режиме r+ оно останется нетронутым.

При записи обмен происходит не непосредственно с файлом, а с некоторым буфером. Информация из буфера переписывается в файл только при переполнении буфера или при закрытии файла.

Для закрытия файла используется функция fclose(). Прототип функции:

int fclose (FILE * указатель_на _файл);

Функция закрывает поток, который был открыт с помощью вызова fopen() и записывает в файл все данные, которые еще оставались в дисковом буфере. Доступ к файлу после выполнения функции будет запрещен.

Возвращение нуля означает успешную операцию закрытия. В случае же ошибки возвращается EOF. Чтобы точно узнать, в чем причина этой ошибки, можно использовать стандартную функцию ferror().

Для закрытия нескольких файлов введена функция:

int fcloseall (void);

Функция закрывает все открытые файлы. Возвращает количество закрытых файлов или EOF, если возникает ошибка. В MVC++ 2005 функция пишется: _fcloseall.

<== предыдущая лекция | следующая лекция ==>
Понятие файла | Функции для модификации содержимого файла
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 461; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.