Эта функция по заданному имени файла path создает новый файл или «очищает» и подготавливает для работы уже существующий. Параметр amode определяет режим доступа к создаваемому файлу:
S_IWRITE – разрешена запись в файл;
S_IREAD – разрешено только чтение из файла;
S_IREAD|S_IWRITE – разрешены и чтение, и запись.
Для использования констант необходимо включить директиву #include <sys/stat.h>
Файл создается для работы в текстовом (по умолчанию) или двоичном режиме обмена. Программист может явно изменить режим обмена:
_fmode = O_BINARY; //переменная _fmode определена в stdlib.h и //ответственна за режим обмена
_fmode = O_TEXT; //(по умолчанию)
Для использования констант необходимо включить директиву #include <fcntl.h>
Если файл с полным именем *path не существует, то он создается заново, для него устанавливается режим доступа (по значению параметра amode) и выбирается режим обмена (текстовый или двоичный).
Если файл с полным именем *path существует и для него был определен режим доступа «только чтение», то вызов функции creat() завершается неудачно, файл с указанным именем остается неизменным.
Если файл с полным именем *path существует и для него определен режим доступа «запись», функция creat() обнуляет длину файла, оставляя неизменными атрибуты его режимов.
При успешном завершении функция creat() возвращает неотрицательное целое число – дескриптор файла, в противном случае – (-1).
Пример создания файла с проверкой результата:
#include <io.h> //для функции creat()
#include <iostream.h>
#include <stdlib.h> //для exit()
#include <sys\stat.h> //для S_IWRITE
………
char *fileName1= “EXAMPLE1.CPP”; //файл будет создаваться в текущем каталоге
int fileNumb1;
fileNumb1= creat(fileName1, S_IWRITE); //файл создается как текстовый для записи
if (fileNumb1 ==-1)
{cerr<< “error”;
exit(1);
}
…….
char *fileName2= “c:\\test\\EXAMPLE2.bin”; //файл создается в каталоге c:\test
_fmode = O_BINARY; //файл создается как двоичный
fileNumb2=creat(fileName2,S_IREAD|S_IWRITE); //файл создается для чтения/записи
char *fileName3= “c:/test/EXAMPLE3.CPP”; //файл также создается в каталоге c:\test
создаются как объекты классов, содержащихся в стандартной библиотеке:
ifstream // для ввода (чтения) данных из файла
ofstream // для вывода (записи) данных в файл
fstream // для ввода и вывода данных (двунаправленный обмен)
Поток (потоковую переменную, объект соответствующего класса) можно определить следующим образом:
ifstreaminFile; //определение потоковой переменной для ввода
ofstreamoutFile; //определение потоковой переменной для вывода
fstreamioFile; //определение потоковой переменной для ввода и вывода
При этом имя потока связывается с выделяемым для него буфером и инициализируются переменные состояния потока.
Теперь необходимо открыть соответствующий файл и связать его с файловым потоком. Существуют функции стандартной библиотеки языка С для открытия файлов fopen() и open(). Но в С++ удобнее пользоваться компонентными функциями соответствующих классов. В данном случае после создания потока, одним из способов связать его с файлом является компонентная функция open() (член каждого из названных потоковых классов).
Прототипы функции для каждого класса выглядят так:
void ifstream::open (const char* fileName, open_mode mode = ios::in);
void ofstream::open (const char* fileName, open_mode mode = ios::out | ios::trunc);
void ffstream::open (const char* fileName, open_mode mode = ios::in | ios::out);
здесь fileName – имя файла, которое может входить в спецификатор пути;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.