Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Функция ftmpfile

Функция freopen

Функция

#include <stdio.h>

FILE*freopen (const char*filename, const char*mode, FILE*stream)

закрывает поток, на описание которого указывает stream, а затем открывает файл, на спецификацию которого указывает ASCIIZ-строка filename. Режим открытия файла задает ASCIIZ- строка mode. Символы, формирующие режим, приведены в табл.3.1. В случае успеха функция возвращает указатель на описание открытого потока, которое будет совпадать с stream. В противном случае функция возвращает NULL. Повторное открытие того же самого файла изменяет права доступа, очищает внутренние буферы и позиционирует указатель записи-чтения либо на начало файла (r, w, r+, w+), либо на его конец (а, а+). Если файлы разные, переоткрытие приводит к переадресации файлового ввода-вывода. Эта функция обычно применяется для переадресации предоткрытых потоков stdin, stdout, stderr, stdaux, stdprn в файлы, определяемые пользователем.

Функция

#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(“аНеправильно заданы аргументы. “

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

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

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

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 после открытия ”

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

“hold=%#06x bsize=%#06x buffer=%#06x”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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);

}

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


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


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



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




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