
Рубанчик В.Б., Михайличенко В.Н. |
Лабораторная работа "Файловый ввод-вывод" |
|
Лабораторная работа
Тема: Файловый ввод-вывод
Цель работы: Освоить основные операции с файлами.
Отчет: Тексты программ с необходимыми комментариями.
В Си операции ввода-вывода основываются на общей концепции потоков ввода-вывода. Поток — это абстракция, позволяющая отвлечься от физических особенностей устройств и воспринимать одинаково файл, экран или клавиатуру — все как потоки для обмена информацией. Поэтому одни и те же функции, выполняющие операции ввода-вывода, могут быть использованы для работы с любыми устройствами. А работу с любыми устройствами часто обобщенно называют работой файлами.
Имеются предопределенные потоки, которые автоматически открываются для работы при запуске программы. Так клавиатура и экран по умолчанию подключены, соответственно, к стандартным потокам ввода и вывода.
Библиотека Си включает два набора функций, обеспечивающих выполнение файлового ввода-вывода. Первый, функции библиотеки системного уровня, требуют от программиста описывать все детали выполнения операций. Эти функции необходимы, в первую очередь, для задач системного программирования.
Функции библиотеки стандартного уровня более ориентированы на прикладное программирование, где потребности в операциях ввода-вывода аналогичны (стандартны) для большинства задач. Функции стандартного уровня являются более высокоуровневыми. Фактически это "обертки", которые скрывают в себе выполнение нескольких низкоуровневых операций, тем самым позволяя программисту сосредоточиться на сути решаемой прикладной задачи.
Имена функций стандартного уровня подобраны так, что обычно отличаются от имен аналогичных функций системного уровня только приставкой f, например, open и fopen, write и fwrite и т.п.
Форматный файловый ввод и вывод
Для записи информации в файл и ее чтения из файла могут использоваться различные функции. Среди библиотечных функций имеются fprintf и fscanf, которые обеспечивают форматный ввод-вывод. По принципу работы они аналогичный printf и scanf, но имеют один дополнительный аргумент (первый по счету) — указатель на структуру FILE, соответствующую используемому потоку.
int fprintf(FILE* fp, char* форматная_строка [,argument, ...]);
int fscanf(FILE* fp, char* форматная_строка [,address, ...]);
ЗАДАНИЕ 1
1. Создается новый файл с именем test.txt, для этого открыть файл с этим именем в режиме, поддерживающем создание новых файлов (см. справочную информацию).
Замечание
Если указать в функции fopen только имя файла, то будет подразумеваться файл из текущей папки. Поэтому, когда программа запускается с помощью exe-файла, то записываемый или читаемый ею файл должен будет находиться в одной с ней папке. При запуске программы из среды ВС текущей папкой будет BC/BIN, откуда запущен файл bc.exe.
Чтобы избежать засорения папки компилятора, в заданиях лабораторной работы нужно прописывать полный путь к файлу.
2. С помощью fprintf вывести в этот файл строку "Hello" и закрыть файл.
3. Открыть файл test.txt в режиме для чтения и дополнения. С помощью fprintf в него дописывается символ новой строки и число — текущий год.
4.
число и ся символ новой строки и текущий
годнить
5. Закрыть файл. Просмотреть содержание полученного файла с помощью файловой системы.
Замечание
После каждой операции открытия файла должна следовать проверка результата выполнения функции.