
- •Лабораторная работа №7 Работа с файловыми потоками в с. Текстовые файлы.
- •Теоретические сведения Форматированный консольный ввод-вывод
- •Файловая система ansi c
- •Указатель на файл
- •Открытие файла
- •Запись символа
- •Чтение символа
- •Закрытие файла
- •Требованияк отчету.
- •Контрольные вопросы:
- •Лабораторное задание.
Какую работу нужно написать?
Файловая система ansi c
Файловая система ANSICявляется частью системы ввода-вывода, позволяющей читать или записывать файлы. Она содержит несколько взаимосвязанных функций. Наиболее типичные показаны в таблице 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);
}
Данный метод позволяет обнаружить ошибки при открытии файла, например, наличие защиты от записи или отсутствие свободного места на диске.