Статья: Теория вычислительных процессов и структур

# include <sys / types.h>

# include <sys / stat.h>

# include <fcnt1.h>

int creat (const char *pathname, mode_t mode);

Первый параметр pathname указывает на маршрутное имя файла UNIX, определяющее имя создаваемого файла и путь к нему. Так же, как и в случае вызова open, параметр mode задаёт права доступа. При этом, если файл существует, то второй параметр также игнорируется. Тем не менее, в отличие от вызова open, в результате вызова creat файл всегда будет усечён до нулевой длины. Пример использования вызова creat:

filedes = creat (“/tmp/newfile”, 0644);

что эквивалентно вызову:

filedes = open (“/tmp/newfile”, O_WRONLY | O_CREAT | O_TRUNC, 0644);

Следует отметить, что вызов creat всегда открывает файл только для записи. Например, программа не может создать файл при помощи creat, записать в него данные, затем вернуться назад и попытаться прочитать данные из файла, если предварительно не закроет его и не откроет снова при помощи вызова open.

Библиотечная процедура fopen является эквивалентом вызова open:

#include <stdio.h>

FILE *fopen (const char *filename, const char *type);

Процедура fopen открывает файл, заданный параметром filename, и связывает с ним структуру FILE. В случае успешного завершения процедура fopen возвращает указатель на структуру FILE, идентифицирующую открытый файл; объект FILE * также часто называют открытым потоком ввода / вывода (эта структура FILE является элементом внутренней таблицы). В случае неудачи процедура fopen возвращает нулевой указатель NULL. При этом, так же, как и для open, переменная errno будет содержать код ошибки, указывающий на её причину.

Второй параметр процедуры fopen указывает на строку, определяющую режим доступа. Она может принимать следующие основные значения:

r - открыть файл filename только для чтения (если файл не существует, то процедура fopen вернёт нулевой указатель NULL);

w - создать файл filename и открыть его только для записи (если файл не существует, то он будет усечён до нулевой длины);

а - открыть файл filename только для записи, все данные будут добавляться в конец файла (если файл не существует, он создаётся).

Следующий пример программы показывает использование процедуры fopen. При этом, если файл indata существует, то он открывается для чтения, а файл outdata создаётся (или усекается до нулевой длины, если он существует). Процедура fatal предназначена для вывода сообщения об ошибке. Она просто передаёт свой аргумент процедуре perror, а затем вызывается exit для завершения работы программы:

#include <stdio.h>

char *inname = “indata”;

char *outname = “outdata”;

main()

{

FILE *inf, *outf;

if ((inf = fopen (inname, “r”)) = = NULL)

fatal (“Невозможно открыть входной файл”);

if ((outf = fopen (outname, “w”)) = = NULL)

fatal (“Невозможно открыть выходной файл”);

/* Выполняются какие-либо действия */

К-во Просмотров: 567
Бесплатно скачать Статья: Теория вычислительных процессов и структур