Язык программирования C



         

Доступ к файлам - часть 3


#include <stdio.h> main(argc, argv) /*cat: concatenate files*/ int argc; char *argv[]; { file *fp, *fopen(); if(argc==1) /*no args; copy standard input*/ filecopy(stdin); else while (--argc > 0) if ((fp=fopen(*++argv,"r"))==null) { printf("cat:can't open %\n",*argv); break; } else { filecopy(fp); fclose(fp); } } filecopy(fp) /*copy file fp to standard output*/ file *fp; { int c; while ((c=getc(fp)) !=EOF) putc(c, stdout); }

указатели файлов stdin и stdout заранее определены в библиотеке ввода-вывода как стандартный ввод и стандартный вывод; они могут быть использованы в любом месте, где можно использовать объект типа file*. Они однако являются константами, а не переменными, так что не пытайтесь им что-либо присваивать.

функция fclose является обратной по отношению к fopen; она разрывает связь между указателем файла и внешним именем, установленную функцией fopen, и высвобождает указатель файла для другого файла. Большинство операционных систем имеют некоторые ограничения на число одновременно открытых файлов, которыми может распоряжаться программа. Поэтому, то как мы поступили в cat, освободив не нужные нам более объекты, является хорошей идеей. Имеется и другая причина для применения функции fclose к выходному файлу - она вызывает выдачу информации из буфера, в котором putc собирает вывод. (При нормальном завершении работы программы функция fclose вызывается автоматически для каждого открытого файла).




Содержание  Назад  Вперед