Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Palekhova_MU_k_PR_po_Si.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
2.15 Mб
Скачать

Практическая работа №7. Файлы

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

Основные функции для работы с файлами

Открытие потока

FILE *fopen (char *filename, char *mode);

filename – имя файла, mode – режим открытия, который может принимать одно из значений, указанных в таблице 3.

Таблица 3

Режим

Выполняемые действия

"r"

- текстовый файл открывается для чтения (от read (англ.) - читать);

"w"

- текстовый файл создается для записи; старое содержимое (если оно было) выбрасывается (от write (англ.) - писать);

"а"

- текстовый файл открывается или создается для записи в конец файла (от append (англ.) - добавлять);

"r+"

- текстовый файл открывается для исправления (т. е. для чтения и для записи);

"w+"

- текстовый файл создается для исправления; старое содержимое (если оно было) выбрасывается;

"a+"

- текстовый файл открывается или создается для исправления уже существующей информации и добавления новой в конец файла.

Для работы с бинарными файлами следует добавить к режиму открытия букву b, например "r+b"

Закрытие потока

int fclose (FILE *stream);

Функции чтения данных из файла

Чтение одного символа

int fgetc (FILE *stream);

при достижении конца файла возвращается значение EOF.

Чтение строки

char * fgets (char *s, int n, FILE *stream);

при достижении конца файла возвращается значение NULL.

Форматный ввод

int fscanf (FILE *stream, char *format, ...);

при достижении конца файла возвращается значение EOF.

Прямой ввод

size_t fread (void *ptr, size_t size, size_t nobj, FILE *stream);

при достижении конца файла возвращается значение, меньшее nobj.

Функции записи данных в файл

Запись одного символа

int fputc (FILE *stream);

Чтение строки

int fputs (char *s, FILE *stream);

Форматный вывод

int fprintf (FILE *stream, char *format, ...);

Прямой ввод

size_t fwrite (const void *ptr, size_t size, size_t nobj, FILE *stream);

Функции позиционирования в файле

Установка позиции

int fseek (FILE *stream, long offset, int origin);

offset – смещение, origin – точка отсчета, может принимать одно из трех значений: SEEK_SET (начало файла), SEEK_CUR (текущее положение) или SEEK_END (конец файла).

Получение текущей позиции

long ftell (FILE *stream);

Постановка задачи

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

Задания могут быть выполнены на трех уровнях сложности.

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

  2. Средний. Имена входных файлов должны передаваться программе при ее запуске (через параметры функции main()). Исходный файл к первой задаче может содержать как латинские, так и русские буквы, на одной строке может находиться несколько фраз, возможно продолжение фразы на следующей строке. Фразы отделяются друг от друга точками, а слова – пробелами, знаками препинания и символами конца строки. Последняя фраза в файле может быть без точки в конце. Вывод содержимого файла записей осуществлять в табличном виде с графлением визуально подходящими символами.

  3. Повышенный. Имена входных файлов должны передаваться программе при ее запуске (через параметры функции main()). Если параметры пользователем при запуске программы не заданы, имена файлов вводятся с клавиатуры. Исходный файл к первой задаче может содержать как латинские, так и русские буквы, фразы могут быть любой длины, соответственно, и на одной строке может находиться несколько фраз, и одна фраза может располагаться на нескольких строках. Фразы отделяются друг от друга точками, а слова – пробелами, знаками препинания и символами конца строки. Последняя фраза в файле может быть без точки в конце. Вывод содержимого файла записей осуществлять постранично в табличном виде с графлением визуально подходящими символами, предусмотреть возможность «листания» страниц как в прямом, так и в обратном направлении.

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