КАТЕГОРИИ: Архитектура-(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) |
Функция fflush
Функция ferror Функция eof Функция fdopen Функция #include<stdio.h> FILE * fdopen(int handle, char * type); связывает поток с дескриптором, полученным функциями creat, dup, dup2 или open. Тип потока должен совпадать с режимом, в котором был открыт handle(см. таблицу 1). При успешном завершении fdopen возвращает значение заново открытый поток stream. В случае ошибки, функция возвращают ноль (NULL). Пример: #include<sysstat.h> #include <stdio.h> #include <fcntl.h> #include<io.h> int main(void) { int handle; FILE *stream; /* открыть файл */ handle = open("DUMMY.FIL", O_CREAT, S_IREAD|S_IWRITE); /* теперь преобразуем его в поток */ stream = fdopen(handle, "w"); if (stream == NULL) printf("Ошибка fdopen "); else {
fprintf(stream, "Hello, world "); fclose(stream); } return 0; }
Функция #include<io.h> int eof(int handle); определяет, достигнут ли конец файла, связанного с дескриптором handle. Если текущая позиция является концом файла, функция eof возвращает значение 1; в противном случае значение 0. При возникновении ошибки возвращается значение -1, и глобальная переменная errno получает значение: EBADF - Неверный номер файла. Пример: #include<process.h> #include<string.h> #include<stdio.h> #include<io.h> int main(void) { FILE *temp_file; int handle; char msg[] = "Тестовый пример"; char ch; /* создать уникальный временный файл */ if((temp_file=tmpfile()) == NULL) { perror("Открытие файла:"); exit(1); } /* получить дескриптор данного файла */ handle = fileno(temp_file); /* записать в файл данные */ write(handle,msg,strlen(msg)); /* переместить указатель в начало файла */ lseek(handle,0l,SEEK_SET); /* считывать данные до появления конца файла */ do { read(handle,&ch,1); printf("%c",ch); } while(!eof(handle); /* закрыть временный файл */ fclose(temp_file); return 0; } Функция #include<stdio.h> int ferror(FILE * stream); является макрокомандой, которая проверяет данный поток stream на ошибочную операцию записи или чтения. Если установлен признак ошибки потока stream, он сохраняет его до вызова функций clearerr или rewind или до момента закрытия потока. Функция ferror возвращает ненулевое значение, если в потоке stream была обнаружена ошибка. Пример: #include <stdio.h> int main(void) { FILE *stream; char ch; /* открыть файл для записи */ stream = fopen("DUMMY.FIL", "w"); /* справоцировать ошибку */ ch = fgetc(stream); /* конец файла? */ if(ferror(stream)) { /* вывести сообщение об ошибке */ printf("Ошибка чтения "); /* сбросить признак ошибки */ clearerr(stream); } fclose(stream); return 0; } Функция #include<stdio.h> int fflush(FILE * stream); записывает в файл содержимое буфера, связанного с потоком stream, если он был открыт на вывод. Функция fflush не оказывает влияния на не буферизованные потоки. В случае успешного завершения возвращает 0. При ошибке возвращает EOF. Пример: #include<string.h> #include<stdio.h> #include<conio.h> #include<io.h> void flush(FILE *stream); int main(void) { FILE *stream; char msg[] = "Тестовый пример"; /* создать файл */ stream = fopen("DUMMY.FIL","w"); /* записать в файл данные */ fwrite(msg,strlen(msg),1,stream); clrscr(); printf("Для сброса потока нажмите любую клавишу... "); getch(); /* сбросить данные в файл, без его закрытия */ flush(stream); printf("Содержимое буферов сброшено в файл "); printf("Для завершения нажмите любую клавишу "); getch(); return 0; } void flush(FILE *stream) { int duphandle; /* сбросить внутренние буфера файла */ fflash(stream); /* создать второй дескриптор */ duphandle = dup(fileno(stream)); /* закрыть второй дескриптор для сброса буферов DOS */ close(duphandle); }
Дата добавления: 2014-01-15; Просмотров: 378; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |