Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие Visual C (14.02.2012).doc
Скачиваний:
3
Добавлен:
12.08.2019
Размер:
97.28 Кб
Скачать

Лабораторная работа №10 Программирование с использованием файлов

10.1. Организация работы с файлами

Различают два типа файлов: текстовые и двоичные (бинарные).

Текстовые файлы хранят информацию в виде текста. В текстовом режиме спецсимволы не будут считываться (например, “/n” в файле означает конец строки и пользователю данная информация не отображается).

Бинарные (или двоичные) файлы используются для хранения любого типа данных.

Функции для работы с файлами размещены в библиотеках stdio.lib (#include <stdio.h>) и io.lib (#include <io.h>). Для работы с файлом на его необходимо создать указатель, который, по сути, содержит полный путь к файлу. Указатель в дальнейшем используется в функциях работы с файлами, чтобы каждый раз не указывать путь к файлу.

Объявление указателя на файл:

File *имя_указателя

При работе с указателями возможно использование макросов. NULL используется в основном для сравнения с текущим указателем, открыт ли файл. EOF означает конец файла и используется для проверки при чтении того, достигнут ли конец файла. FOPEN_MAX содержит максимальное число одновременно открытых файлов.

10.2. Функции для работы с файлами

При работе с файлом используется поток данных. Поток данных служит в качестве буфера при записи/чтении файла. Непосредственные изменения в файл произойдут только на этапе закрытия, когда данные из потока записываются в файл.

File *fopen(const char * filename, const char * mode)

открывает файл и связывает его с потоком данных, на который указывает указатель.

filename – указатель на строку символов, в которой хранится имя файла и путь к нему

mode – указатель на строку символов, в которой указывается режим открытия файла. Допустимые режимы:

r”  открытие файла для чтения;

w”  открытие файла для записи в начало файла;

a”  открытие файла для чтения и записи. Запись производится только в конец файла.

Если указать только один из представленных выше режимов, то по умолчанию открывается в текстовом режиме. Можно явно указать, что файл открывается в текстовом режиме, тогда необходимо дописать символ «t», а при работе с бинарными – «b». Для открытия файла в режиме чтения и записи необходимо добавить символ «+». При возникновении ошибки во время открытия файла, функция fopen возвращает значение NULL.

int fclose(FILE *указатель)

прекращает работу с данным указателем, закрывает связанный с указателем поток и записывает в файл все данные, которые еще оставались в буфере. После этого к файлу можно обратиться только после его повторного открытия.

В случае успешного закрытия файла функция возвращает 0, в случае же ошибки  значение EOF.

int fcloseall(void)

закрывает все открытые файлы. Возвращает количество закрытых файлов или EOF при возникновении ошибки.

int putc(int символ, FILE * указатель)

записывает 1 символ в текущую позицию указанного открытого файла.

int getc(FILE * указатель)

считывает 1 символ из текущей позиции указанного открытого файла.

int feof(FILE * указатель)

возвращает значение false, если конец файла не достигнут, и true, если достигнут конец файла.

int fputs(const char * строка, FILE * указатель)

записывает строку символов в текущую позицию в файле.

char *fgets(char *строка, int длина, FILE * указатель)

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

int *fprintf(FILE * указатель, const char * управляющая_строка)

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

управляющая_строка определяет строку форматирования аргументов, заданных своими адресами. Данная строка помимо текста содержит символы «%», после которых следует символ типа данных:

I или i  десятичное, восьмеричное или шестнадцатеричное целое число;

D или d  десятичное целое число;

U или u  десятичное целое число без знака;

E или e  действительное число с плавающей точкой;

s  строка символов;

c  один символ.

Если в строке присутствуют управляющие символы, то за ней идут в установленном порядке данные.