Функция ftmpfile

Функция

#include<stdio.h>

FILE*tmpfile (void)

Создает и открывает временный файл в текущей директории текущего накопителя для потокового ввода-вывода. Файл открывается с правами “w+b”. В случае успеха функция возвращает указатель на начало описания открытого потока. В противном случае возвращается NULL. Отсутствует возможность определить имя созданного файла. После завершения программы или закрытия файла он автоматически удаляется. Функция используется тогда, когда программе необходимо временно переместить промежуточные данные на диск.

Пример тестовой программы:

/*L3_1.C*/

#include<stdio.h>

#include<process.h>

#include<errno.h>

void file_prt(FILE*);

void main(int argc, char**argv)

{ FILE*fptr;

if(argc<3)/* все ли аргументы заданы?*/

{ printf(“\аНеправильно заданы аргументы. “\

“Использование программы:\n”\

“L3_1[d:][маршрут_директория ] имя_файла”\

“[.расширение] режим_открытия\n”);

exit(1); }

if((fptr=fopen(argv[1], argv[2]))!=NULL)

{ file_prt(fptr); /*распечатывает поля fptr*/

fclose(fptr); } /*открытый файл закрывается*/

else perror(“\aОшибка открытия файла”);

}

/*Внутренняя функция L3_1.C. Распечатывает поля переменной, описывающей открытый поток, на которую указывает fptr.*/

void file_prt(FILE*fptr)

{ printf(“ Поля переменной по шаблону FILE после открытия\n\n”\

“level=%#06x flags=%#06x fd =%#06x”\

“hold=%#06x bsize=%#06x\nbuffer=%#06x”\

“curp=%#06x istemp=%#06x token=%#06x\n”,

fptr->level,fptr->flags,fptr->fd,

fptr->hold,fptr->bsize,fptr->buffer,

fptr->curp,fptr->istemp,fptr->token);

/* Вывод символического представления флагов*/

printf(“\nСимволическое представление флагов открытия\n”\

“ (Да=1, Нет=0) \n”\

“_F_READ %d Файл открыт для чтения\n”\

“_F_WRITE %d Файл открыт для записи\n”\

“_F_BUF %d Файл имеет выделенный динамически буфер данных\n”\

“_F_LBUF %d Построчно буферизуемый файл\n”\

“_F_ERR %d Индикатор наличия ошибки при выполнении файлового доступа\n”\

“_F_EOF %d Индикатор наступления условия конца файла\n”\

“_F_BIN %d Признак открытия файла в двоичном режиме\n”\

“_F_IN %d Осуществляется чтение(ввод) данных из файла\n”\

“_F_OUT %d Осуществляется запись(вывод) данных в файла\n”\

“_F_TERM %d Файл является терминалом\n”,

fptr->flags&_F_READ,(fptr->flags&_F_WRIT)>>1,

(fptr->flags&_F_BUF)>>2,(fptr->flags&_F_LBUF)>>3,

(fptr->flags&_F_ERR)>>4,(fptr->flags&_F_EOF)>>5,

(fptr->flags&_F_BIN)>>6,(fptr->flags&_F_IN)>>7,

(fptr->flags&_F_OUT)>>8,(fptr->flags&_F_TERM)>>9);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: