Лабораторная работа №11
Тема: Файловый ввод – вывод в С++ Постановка задачи. Разработать программу, выполняющую следующие функции: · поэкранный вывод текстового файла · преобразование текстового файла в двоичный файл · вывод двоичного файла · выполнение дополнительной операции с двоичным файлом Для работы с файлами использовать библиотеку классов потокового ввода – вывода fstream . h.Текстовый файл создать с помощью любого текстового редактора, записав в каждую строку файла информацию об одном экземпляре объекта. Варианты заданий приведены в табл.11 Таблица 11 Варианты заданий
Методические указания В С++ для работы с файлами определены три класса потоков:
Объявления этих классов находятся в заголовочном файле <fstream.h>. Основные компонентные функции классов-потоков приведены в табл. 12. Таблица 12 Компонентные функции классов-потоков
Значения параметра «режим» функции открытия файла приведены в табл. 13. Таблица 13 Режимы открытия файла
Для обмена данными с двоичными файлами используются компонентные функции read и write, а для работы с текстовыми файлами - перегруженные операции >> и <<. На рис. 18 приведена программа, которая создает текстовый файл и записывает в него данные. Пример программы чтения записи с заданным номером из двоичного файла приведен на рис. 19.
#include <conio.h> #include <fstream.h> #include <stdlib.h> struct rab { long nom; char fam[15]; char name[15]; int zar; int nal; }; void main(void) { rab r; ofstream f; // выходной поток char name[12]; // имя файла cout<<"Введите имя файла"; cin>>name; f.open(name); //открытие файла для записи if(!f) //проверка выполнения операции открытия { cout<<"Ошибка"; getch(); exit(1); } for(int i=1;i<=10;i++) //цикл ввода данных и записи в файл {cout<<"? "; cin>>r.nom>>r.fam>>r.name>>r.zar>>r.nal; f<<r.nom<<" "<<r.fam<<" "<<r.name<<" "<<r.zar<<" "<<r.nal <<endl;} f.close(); } Рис. 18. Создание текстового файла
#include <iostream.h> #include <fstream.h> #include <stdlib.h> struct rab { long nom; char fam[15]; char name[15]; int zar; int nal; }; void main(void) { rab r; int n; ifstream f; //входной поток f.open("d:\\user\\b.dat",ios::binary| ios::in); if(!f) { cout<<"Ошибка"; getch(); exit(1);} cout<<"n ? "; cin>>n; f.seekg((n-1)*sizeof(r)); // перемещение указателя на запись f.read((char*)&r,sizeof(r)); //чтение записи в структуру cout<<r.nom<<" "<<r.fam<<" "<<r.name<<" "<<r.zar<<" "<<r.nal <<endl; f.close(); } Рис. 19. Чтение из двоичного файла
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Почему стероиды повышают давление?: Основных причин три... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (231)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |