- •Лабораторная работа №7 Работа с файловыми потоками в с. Текстовые файлы.
- •Теоретические сведения Форматированный консольный ввод-вывод
- •Файловая система ansi c
- •Указатель на файл
- •Открытие файла
- •Контрольные вопросы:
- •Лабораторное задание.
- •Запись символа
- •Чтение символа
- •Закрытие файла
- •Требования к отчету.
Файловая система ansi c
Файловая система ANSI C является частью системы ввода-вывода, позволяющей читать или записывать файлы. Она содержит несколько взаимосвязанных функций. Наиболее типичные показаны в таблице 3
Таблица 3
Имя fopen() fclose() putc() fputc() getc() fgetc() fseek() fprintf() fscanf() feof() ferror() rewind() remove() fflush() |
Функция Открывает файл Закрывает файл Записывает символ в файл Аналогично putc() Читает символ из файла Аналогично getc() Переходит к указанному байту в файле Делает то же в файл, что и printf() на консоль Делает то же с файлом, что и scanf() c консолью Возвращает истину при достижении конца файла Возвращает истину при обнаружении ошибки Сбрасывает индикатор позиции файла на начало файла Стирает файл Очищает буфер файла |
Заголовочный файл stdio.h должен включаться в любую программу, использующую данные функции.
Заголовочный файл stdio.h предоставляет прототипы для функций ввода-вывода и определяет три типа: size_t, fops_t и FILE. Тип size_t – это беззнаковое целое, как и fops_t. Тип FILE обсуждается в следующем разделе.
Указатель на файл
Указатель на файл – это указатель на информацию, определяющую различные параметры файла, включая его имя, состояние и текущую позицию. В принципе, указатель на файл идентифицирует конкретный дисковый файл и используется потоком для выполнения операций ввода-вывода. Указатель на файл – это переменная-указатель типа FILE. Для создания файловой переменной-указателя используется оператор типа:
FILE *fp;
Открытие файла
Функция fopen() открывает для использования поток, связывает файл с данным потоком и затем возвращает указатель FILE на данный поток. Чаще всего файл рассматривается как дисковый файл. Функция fopen() имеет следующий прототип:
FILE *fopen(const char *имя_файла, const char *режим);
где режим указывает на строку, содержащую желаемый режим открытия файла. Некоторые значения режима показаны в таблице 4.
Таблица 4
Режим |
Значение |
“r” |
Открывает файл для чтения. (По умолчанию как текстовый файл.) |
“w” |
Создаёт файл для записи. (По умолчанию как текстовый файл.) |
“a” |
Присоединяет к файлу. (По умолчанию как текстовый файл.) |
“rb” |
Открывает двоичный файл для чтения. |
“wb” |
Открывает двоичный файл для записи. |
“ab” |
Присоединяет к двоичному файлу. |
“r+” |
Открывает файл для чтения и записи. (По умолчанию как текстовый файл.) |
“w+” |
Создаёт файл для чтения и записи. (По умолчанию как текстовый файл.) |
“a+” |
Присоединяет или создаёт файл для чтения и записи. (По умолчанию как текстовый файл.) |
Имя_файла должно быть строкой символов, представляющей корректное имя файла операционной системе, и может содержать указание пути.
Функция fopen() возвращает указатель базового типа FILE. Данный указатель идентифицирует файл и используется большинством функций файловой системы. Его никогда не следует изменять самостоятельно. Функция возвращает нулевой указатель, если файл не может быть открыт.
Если необходимо открыть файл с именем test на запись, то следует написать:
fp = fopen(“test”, “w”);
где fp – это переменная типа FILE *. Тем не менее обычно можно увидеть следующее:
if((fp = fopen(“test”, “w”))==NULL) {
puts(“Cannot open file.”);
exit(1);
}
Данный метод позволяет обнаружить ошибки при открытии файла, например, наличие защиты от записи или отсутствие свободного места на диске.
