Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AllCandC++Lectures.docx
Скачиваний:
2
Добавлен:
25.09.2019
Размер:
52.56 Кб
Скачать

Открытие файла

Открываемые файлы могут использоваться для разных целей: одни для записи, другие для чтения а третьи и для того и для другого. При открытии файла мы указываем, что собираемся делать с файлом. Кроме того, нужно указать какой это файл: текстовый или двоичный. Каждый раз, когда ОС получает запрос на открытие файла, она создает поток и присваивает ему дескриптор (описатель). Дескриптор можно рассматривать как имя поток, хотя обычно он задается числом. Программа может открыть одновременно несколько потоков. Если мы выполняем некоторую операцию, то дескриптор определяет поток, в котором выполняется операция. Поэтому все функции для работы с файлами должны тем или иным образом получать через параметр этот дескриптор. На стандартном уровне, при открытии файла создается специальная структура - file (stdio.h), которая включает в себя дескриптор.

typedef struct {

short level; /* уровень заполнения буфера*/

unsigned flags; /*флаги состояния*/

char fd; /* дескриптор*/

short bsize; /* размер внутреннего буфера*/

} file

Структуры типа file создается при открытии файла. Сначала для нее динамически выделяется память, а потом эта память заполняется значениями, соответствующими данному потоку. На стандартном уровне для открытия файла используется функция fopen, которая позволяет открыть файл для чтения, записи и добавления в конец файла.

Файлы открывается при помощи функции fopen, у которой два аргумента. И там и там используются строки. File* fopen("имя_файла", "режим")

C:\\FVT\\DATA.TXT(нужно ставить по две \).

Режимы описываются с помощью комбинаций. R - открыть файл для чтения. W - открыть новый файл для записи. Если файл существует, то все в нем стирается. A - открыть файл для записи данных в его конец (то есть добавление). Если файл не существует, то будет создан.

Модификации: R+ - открыть файл для чтения и записи, если файл не существует, то будет ошибка. W+ - открыть файл для чтения и записи, при записи в существующий файл, информация удаляется. A+ - файл открывается для чтения и добавления. Если файл открывается в текстовом режиме, то добавляется буква T. Если в двоичном режиме, то B. Возможны варианты: zt, zb, z+t, z+b.

Если операция открытия выполнена успешно, то функция возвращает указатель на структуру типа файла. Если открыть файл не удалось, то функция возвращает NULL. Каждый раз, после того как в программе используется функция fopen, необходимо проверить завершилась ли операция открытия файла успехом.

Завершение работы с файлом означает вызов функции fclose(fp);

Функции для ввода вывода в поток

1) ввод вывод символов: fpute(символ, file* fp); эта функция возвращает выведенный символ. Если произошла ошибка, то функция возвращает константу eof(то есть -1), end of file.

2) fgetc. У нее 1 аргумент.

Для строки: char* fputs(char* str, file* fp), char* fgets(char* str, int n, file* fp);

Для форматного ввода вывода, нужно использовать функции fprintf и fscanf.

Int feof(file* fp); это функция предиката.

Управление просмотром файлов

Для каждого файла создается специальная переменная, при его открытии, которая хранит номер позиции, с которой будет выполняться следующая операция ввода вывода. Эту переменную можно рассматривать как курсор текущей позиции, и стандартная библиотека предлагает функции, которые позволяют управлять этим курсором. Основная функция это fseek(от англ. искать). Функция fseek позволяет определять новое положение для курсора текущей позиции. Новая позиция может отсчитываться при задании смещения текущей позиции от начала или от конца файла. Rewind(file*pf) - смещения курсора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]