|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Обработка бинарных файловЕсли файл открыт в бинарном режиме, его можно записывать или считывать побайтно. Функция fseek() позволяет обращаться с бинарным файлом как с массивом и переходить к любой позиции в файле, обеспечивая возможность произвольного доступа. Если текстовые файлы являются файлами с последовательным доступом, то к бинарным файлам может применяться произвольный доступ. Составим программу создания нового файла, каждая запись которого представляет собой структуру с информацией о городе: код, название, численность жителей.
#include "stdafx.h" #include <conio.h> typedef struct town { int kod; char name[10]; long c; } city;// описание структуры записи о городе city t; // опиание переменной такой структуры int main() { char c; FILE *f; char ch; f=fopen("file1.dat","wb"); //открытие бинарного файла для записи printf("\n Ввод информации о городе "); do { printf("\nКод: "); scanf("%d", &t.kod); printf("\nназвание: "); scanf("%s", t.name); printf("\nколичество жителей: "); scanf("%ld", &t.c); fwrite(&t, sizeof(t), 1, f); //запись в файл информации о городе printf("\n END Закончить? y/n "); ch=getch(); } while (ch!= 'y'); fclose(f); } Выполнение этой программы приведет к созданию бинарного файла с информацией о городах. Рассмотрим еще одну программу, которая будет читать из файла информацию о городах и выводить на экран список городов, количество жителей в которых превышает миллион. #include "stdafx.h" #include <conio.h> typedef struct town { int kod; char name[10]; long c; } city; city t; int main() { FILE *f; f=fopen("file1.dat","rb"); //открытие бинарного файла для чтения fread(&t, sizeof(t), 1, f); //чтение из файла одной записи в t while (!feof(f)) { if(t.c>1000000) printf("\n%3d название:%10s количество жителей:%ld", t.kod, t.name, t.c); fread(&t, sizeof(t), 1, f); } fclose(f); }
2.15.2. Работа с потоками в С++ Поток — это понятие, относящееся к любому переносу данных от источника к приемнику. Потоки C++ обеспечивают надежную работу как со стандартными, так и с определенными пользователем типами данных. Для работы с файлами в С++ необходимо подключить заголовочный файл <fstream>. В <fstream> определены несколько классов и подключены заголовочные файлы <ifstream> - файловый ввод и <ofstream> - файловый вывод. Файловый потоковый ввод/вывод аналогичен стандартному вводу/выводу. Единственное отличие состоит в том, что ввод/вывод выполнятся не на экран, а в файл. Если ввод/вывод на стандартные устройства выполняется с помощью объектов cin и cout, то для организации файлового потокового ввода/вывода достаточно создать собственные объекты, которые можно использовать аналогично операторам cin иcout. Например, необходимо создать текстовый файл и записать в него строку «Работа с файлами в С++» средствами работы с потоками. Для этого необходимо проделать следующие шаги: 1. создать объект класса ofstream; 2. cвязать объект класса с файлом, в который будет производиться запись; 3. записать строку в файл; 4. закрыть файл. #include "stdafx.h" #include <iostream> #include <fstream> using namespace std; int main(int argc, char* argv[]) { setlocale(0,"RUS"); ofstream fout("cppstudio.txt"); /* создаём объект класса ofstream для записи и связываем его с файлом cppstudio.txt */ fout<< "Работа с файлами в С++";// запись строки в файл fout.close(); // закрываем файл cout<<"Файл создан"<<"\n"; return 0; } Для более углубленного изучения данного подхода работы с файлами рекомендуем обратиться, например, [2],[4].
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |