КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Простой пример работы с бинарным файлом
Бинарные файлы 123 -456 19 -81 1234 12 45 67 34 -87 -53 17 -62 101 169
Бинарные файлы представляют собой последовательность двоичных кодов, копируемых из оперативной памяти без каких либо изменений. Такой способ передачи данных требует значительно меньше времени. Так, например, в бинарный файл можно записывать массивы чисел, строк или структур в таком же виде, в котором они хранятся в памяти. Из бинарного файла данные также можно загрузить в память без изменений. При этом совершенно невозможно по виду бинарного файла определить, какая информация в нем хранится. Структура бинарного файла представляет собой последовательность записей одинаковой длины, соответствующей данному типу или структуре (sizeof (int)) или (sizeof (struct)).
Для операций чтения отдельной записи бинарного файла предназначена функция, которая возвращает 1, если запись прочитана, иначе возвращает 0: fread(<адрес буфера>,<размер записи>, <колич. блоков>,<указатель на файл>); Для операций записи бинарного файла предназначена функция: fwrite(<адрес буфера>,<размер записи>, <колич. блоков>,<указатель на открытый файл>); Бинарный файл позволяет производить не только последовательный, но и произвольный доступ к записям файла. Для этого необходимо установить указатель на некоторую запись файла с помощью функции: fseek(<указатель на открытый файл>,<величина смещения в байтах>,<параметр смещения>); Пример: fseek(f, sizeof(int)*(n-1), SEEK_SET); Файлы бинарного типа широко используются для хранения самых разнообразных данных в системах управления базами данных (СУБД). Они характеризуются высокой скоростью обмена, более высокой плотностью размещения данных, чем в текстовых файлах. Для хранения данных о студентах используем бинарный файл. Программа должна выполнять следующие функции: 1. Создавать бинарный файл. 2. Добавлять в него новые записи. 3. Просматривать записи. Следует предусмотреть расширение функциональности данной задачи, например добавить поиск по фамилии, выборку данных по высоким или низким показателям балла успеваемости, удаление записей, сортировку записей и т.д. Поэтому в программу включим простейшее меню. Создадим его следующим образом. Выведем нумерованный список на экран и по запросу введем номер нужного пункта меню, по этому номеру будет выбираться соответствующая функция обработки нашей простой базы данных. // Бинарный файл. База Данных - Студенты; #include <stdio.h>; #include <iostream.h> #include <conio.h> char fname[20]; FILE *inout; char st[80]; int n; struct student { char fam[16]; // Фамилия студента int kurs; // Курс обучения float ball; // Балл успеваемости }; struct student person; void CreateF(); // Создать файл void AppendF(); // Добавить в файл void ViewF(); // Просмотр файла //------------------------------------------- void main() { int poz=1; // Позиция меню do {cout<<" 1. Create New File.\n"; cout<<" 2. Append to File.\n"; cout<<" 3. View File.\n"; cout<<" 4. Exit Program.\n"; cout<<"--> "; cin>>poz; if (poz==1) CreateF(); if (poz==2) AppendF(); if (poz==3) ViewF(); } while (poz<4); } void CreateF() // Файл создается и закрывается { cout<<"Name of File = "; cin>>fname; if ((inout=fopen(fname,"wb"))==NULL) { printf("File Error!"); getch(); return;}; fclose(inout); return; }; void AppendF() // Файл открывается, // добавляется запись // файл закрывается { cout<<"Name of File = "; cin>>fname; if ((inout=fopen(fname,"ab"))==NULL) { printf("File Error!"); getch(); return; }; cout<<"FAM = "; cin>>person.fam; cout<<"Kurs = "; cin>>person.kurs; cout<<"Ball = "; cin>>person.ball; fwrite(&person, sizeof(person),1,inout); fclose(inout); return; }; void ViewF() // Файл открывается, // просматриваются все записи // файл закрывается { cout<<"Name of File = "; cin>>fname; if ((inout=fopen(fname,"rb"))==NULL) { printf("File Error!"); getch(); return; }; while (fread(&person,sizeof(person),1,inout)) { cout<<ftell(inout)<<"\n"; printf("FAM: %s\n",person.fam); printf("Kurs: %i\n",person.kurs); printf("Ball: %.2f\n",person.ball); printf("--------------------------\n"); } fclose(inout); return; }; Литература 1. Шилд Г. Программирование на BORLAD C++ для профессионалов. Мн.1998 2. Керниган Б, Ричи Д. Язык программирования Си. М. 1992. 3. Основы алгоритмизации и программирования. Язык Си: учеб. пособие / Демидович Е.М.–СПб.:БХВ-Петербург, 2006.–440с. 4. Страуструп Б. Язык программирования C++.: Бином, Невский Диалект, 2004 г.–1104 стр. 5. Седжвик Р. Фундаментальные алгоритмы на C++.: Diasoft. М. 2004.–1136 6. Стенли Б. Липпман. C++ для начинающих: Пер. с англ. 2тт. - Москва: Унитех; Рязань: Гэлион, 1992,–345с. 7. М. Эллис, Б. Строуструп. Справочное руководство по языку C++ с комментариями: Пер. с англ. - Москва: Мир, 1992. 445с. 8. В.В. Подбельский. Язык C++: Учебное пособие. - Москва: Финансы и статистика, 1995. 560с. 9. У. Сэвитч. C++ в примерах: Пер. с англ. - Москва: ЭКОМ, 1997. 736с.
Приложение 1. Полезные программы
Дата добавления: 2014-11-29; Просмотров: 548; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |