Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования на языке C_4.docx
Скачиваний:
46
Добавлен:
25.03.2016
Размер:
299.55 Кб
Скачать

Открытие файла: fopen( )

Функцией fopen( ) управляют три основных параметра. Первый - имя файла, который следует открыть. Он является и первым аргументом fopen( ). В нашем примере это " File ". Второй параметр описывает, как должен использоваться файл:

" r " - файл нужно считать,

" w " - файл нужно записать,

" a " - файл нужно дополнить.

" w+ " - новый текстовый файл открывается для записи и последующих многократных исправлений. Если файл уже существует, то предыдущее содержимое стирается. Последующие после открытия файла запись и чтение из него допустимы в любом месте файла, в том числе запись разрешена и в конце файла, т.е. файл может увеличиваться.

" r+ " - существующий текстовый файл открывается как для чтения, так и для записи в любом месте файла ; однако в этом режиме невозможна запись в конец файла, то есть недопустимо увеличение размеров файла.

" a+ " - текстовый файл открывается или создается, если файла нет, и становится доступным для изменений, т.е. для записи и для чтения в любом месте; при этом в отличие от режима " w+ "можно открыть существующий файл и не уничтожать его содержимое; в отличие от режима " r+ " в режиме " a+ " можно вести запись в конец файла, то есть увеличивать его размеры.

Некоторые системы предоставляют еще дополнительные возможности, которые мы здесь не будем рассматривать. Используемые коды являются строками, а не символьными константами. При применении " r " открывается существующий файл. При двух других применениях тоже будет открываться существующий файл, но если такого файла нет, он будет создан. Если вы используете "w" для существующего файла, то старая версия его стирается, и ваша программа начинает записывать на чистое место. Третий параметр является указателем на файл. Это значение возвращается самой функцией:

FILE *in;

in=fopen("File","r");

Теперь in является указателем на файл " File ". С этого момента программа ссылается на файл при помощи указателя in, а не по имени File. ( Файл stdio.h содержит строку

FILE *fopen( )

Если fopen( ) не способна открыть требуемый файл, она возвращает значение NULL, определенное в stdio.h как 0.

Закрытие файла: fclose( )

В нашем примере показано, как нужно закрывать файл:

fclose(in);

Аргумент функции является указателем на файл. Для более серьезной программы нужно смотреть, успешно ли закрыт файл. Функция fclose( ) возвращает значение 0, если файл закрыт успешно, и EOF в противном случае.

Текстовые файлы с буферизацией

Функции fopen( ) и fclose( ) работают с текстовыми файлами с " буферизацией ". Под буферизацией мы понимаем, что вводимые и выводимые данные запоминаются во временной области памяти, называемой буфером. Если буфер заполнился, содержимое его передается в блок, и процесс буферизации начинается снова. Одна из основных задач fclose( ) заключается в том, чтобы освободить любые частично заполненные буферы, если файл закрыт. Текстовым считается файл, в котором информация запоминается в виде символов в коде ASCII или аналогичном. Текстовый файл отличается от двоичного файла, который обычно используется для запоминания кодов машинного языка.

Ввод-вывод текстового файла: getc( ), putc( )

Две функции getc( ) и putc( ) работают аналогично функциям getchar( ) и putchar( ) (описанным в предыдущих лекциях). Разница заключается в том, что вы должны сообщить, какой файл следует использовать.

char ch;

ch=getchar( );

предназначена для получения символа от стандартного ввода, а

ch=getc(in);

- для получения символа от файла, на который указывает in.

putchar(ch);

выводит символ на стандартный файл вывода.

putc(ch,t);

предназначена для записи символа ch в файл, на который ссылается указатель t типа FILE.