
- •Лабораторная работа №6. Запись / чтение структуры из файла. Теоретическая часть
- •Открытие и закрытие файлов
- •Класс istream
- •Функции get, getline и read
- •Функция возвращения
- •Позиционирование потока
- •Класс ostream
- •Функции вывода put и write
- •Функции класса filebuf
- •Функции класса streambuf
- •Функции класса strstreambuf
- •Определение состояния потока
- •Работа со списком.
- •Работа со списками через файл.
- •Контрольные вопросы:
- •Порядок выполнения лабораторной работы:
- •Практическая часть. Индивидуальные задания.
Работа со списками через файл.
Для работы со списком будем использовать следующую структуру:
struct element //Структура элемента списка
{
int x; //поле с данными
element *Next; //указатель на следующий элемент списка
};
Функция сохранения списка в файле – параметром функции является заголовок списка, который необходимо сохранить в указанном файле. Вначале необходимо открыть файл на запись. После этого организовывается последовательный перебор элементов списка. До тех пор пока текущий элемент списка не станет равным NULL. На каждой итерации цикла в файл записываются поля элемента списка, кроме поля ссылки на следующий элемент. Данное поле в файле не сохраняется. Т.е. функция в целом напоминает функцию вывода содержания списка на экран.
Пример записи в файл:
element *temp_element= new element; // Объявление переменной элемент списка
//… код функции
filelist<<temp_element->x;//Запись поля текущего элемента в файл
После окончания записи в файл необходимо закрыть файл.
Функция чтения элементов списка из файла в список – функция возвращает указатель на первый элемент загруженного из файла списка.
Для начала необходимо открыть файл содержащий список на чтение. После этого организуется цикл до тех пор, пока маркер файла не перейдёт до конца файла. На каждой итерации происходит считывание значения полей структуры и формируется новый элемент списка. При этом для поля следующий элемент берётся указатель на предыдущий элемент, сформированный на предыдущем шаге. На первом шаге полю ссылке устанавливается значение NULL. После этого на текущем же шаге элемент копируется в элемент заголовок списка. Т.е. функция в целом напоминает функцию ввода первого элемента в список.
Пример считывания данных из файла в переменную.
filelist>>temp_element->x;
Для организации записи/чтения в файл структуры состоящей из нескольких полей можно использовать метод read и write.
Контрольные вопросы:
.Объект класса ifstream.
Объект класса ofstream.
Объект класса fstream.
Открытие файла.
Флаги режима доступа к файлу.
Использование функции open для открытия файла.
Ввод строки в файл.
Чтение строки из файла.
Функция get.
Функция getline.
Функция read.
Позиционирование потока.
Функция вывода put.
Функция вывода write.
Однонаправленный линейный список.
Функция вставки первого элемента в список.
Функция вставки не первого элемента в список.
Функция просмотра всех элементов списка.
Функция удаления элемента из списка.
Функция очистки списка.
Функция поиска элемента в списки по информационному полю.
Порядок выполнения лабораторной работы:
Ознакомиться с теоретической часть лабораторной работы;
Выполнить задания в соответствии с вариантом (вариант берётся по номеру журнале);
Показать результаты работающей программы преподавателю;
На отчёт предоставить:
Титульный лист;
Листинг программы с комментариями согласно номеру варианта;
Блок схема программы;
Описание программы.
Ответить на контрольные вопросы.