- •Лабораторная работа №7 Работа с файловыми потоками в с. Текстовые файлы.
- •Теоретические сведения Форматированный консольный ввод-вывод
- •Файловая система ansi c
- •Указатель на файл
- •Открытие файла
- •Контрольные вопросы:
- •Лабораторное задание.
- •Запись символа
- •Чтение символа
- •Закрытие файла
- •Требования к отчету.
Запись символа
Система ввода-вывода ANSI C определяет две эквивалентные функции, выводящие символ – putc() и fputc(). Функция putc() используется для записи символов в поток, ранее открытый для записи с помощью функции fopen(). Прототип для putc() следующий:
int putc(int ch, FILE *fp);
где fp – указатель на файл, возвращённый fopen(), а ch – выводимый символ. По историческим причинам ch определена как int, но используется только младший байт.
Если putc() выполнена успешно, она возвращает выведенный символ. В противном случае возвращает EOF.
Чтение символа
Имеется две эквивалентные функции, предназначенные для ввода символа – getc() и fgetc(). Функция getc() используется для чтения символов из потока, открытого на чтение с помощью fopen(). Прототип getc() следующий:
int getc(FILE *fp);
где fp – это указатель на файл типа FILE *, возвращённый fopen(). По традиции getc() возвращает целое, но старшие байты установлены в 0.
Функция getc() возвращает EOF при достижении конца файла.
Закрытие файла
Функция fclose() используется для закрытия потока, ранее открытого с помощью fopen(). Она сохраняет в файл данные, находящиеся в дисковом буфере, и выполняет операцию системного уровня по закрытию файла.
Имеет прототип:
int fclose(FILE *fp);
где fp – это указатель на файл, возвращённый fopen(). Если возвращён 0, то операция закрытия выполнена успешно, а если EOF, то, значит, была ошибка.
Помимо основных функций ввода-вывода, система буферизированного ввода-вывода содержит fprintf() и fscanf(). Данные функции ведут себя также, как и printf() и scanf(), за тем исключением, что работают с дисковыми файлами. Они имеют следующие прототипы:
int fpintf(FILE *fp, const char * форматная_строка, …);
int fscanf(FILE *fp, const char * форматная_строка, …);
где fp – это указатель на файл возвращаемый fopen().
Требования к отчету.
Отчет должен содержать:
наименование и цель работы;
краткие теоретические сведения;
формулировку задания своего варианта;
схему алгоритма
текст программы для варианта задания, соответствующего номеру фамилии студента в группе (если студент закреплен за определенной ЭВМ, имеющей номер, то номеру ЭВМ);
результаты выполнения программы.
Контрольные вопросы:
Что такое поток?
Что представляет собой файловый указатель?
Перечислить режимы доступа к файлу.
Как открыть и как закрыть файл?
Лабораторное задание.
Для выполнения лабораторной работы необходимо составить программу согласно своему варианту задания.
Таблица вариантов
Номер варианта |
Задание |
1, 12, 23 |
Дан файл f, компоненты которого являются целыми числами. Записать в файл g, компоненты файла f, исключив повторные вхождения чисел. |
2, 13, 24 |
Дан файл f, компоненты которого являются действительными числами. Найти:
|
3, 14, 25 |
Дан символьный файл f. Подсчитать число вхождений в файл каждой из букв a, b, c, d, e, f. Результат вывести в файл g в виде таблицы с комментариями. |
4, 15, 26 |
Дан файл f, компоненты которого являются целыми числами. Записать в файл g все четные числа исходного файла, в файл h – все нечетные. Порядок следования чисел сохраняется. Записать в файл g и h комментарии. |
5, 16, 27 |
Дан текстовый файл, содержащий программу на языке Си. Проверить эту программу на соответствие числа открывающих и закрывающих фигурных скобок. |
6, 17, 28 |
Дан символьный файл f. Найти и записать в файл g самое длинное слово файла f, снабдив его комментарием. |
7, 18 |
Дан файл f, компоненты которого являются целыми числами. Получить в файле g все компоненты файла f:
Записать в файл g комментарий. |
8, 19 |
Дан файл f. Создать два файла, записав в первый из них все четные числа, а во второй – все нечетные. |
9, 20 |
Дан файл f. Создать два файла, записав в первый из них среднее геометрическое всех четных чисел, а во второй – среднее арифметическое всех нечетных чисел. |
10, 21 |
Дан числовой файл f. Выбрать все значения, которые делятся нацело на 2 и 4, но не делятся на 6. Записать эти значения в файл g, а все остальные – в файл h. |
11, 22 |
Дан текстовый файл f. Определить, являются ли первые два символа цифрами и если да, то четно ли это число. Записать его в файл g, если оно четно и в h ,если оно нечетно. |
