АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Обработка бинарных файлов

Читайте также:
  1. Cкоростная автоматическая обработка
  2. NDS і файлова система
  3. А Порядок работы на станции при тахеометрической съемке. Вычислительная и графическая обработка результатов съемки.
  4. А. Термическая обработка
  5. Атрибути файлових об'єктів
  6. Бухгалтерская обработка документов
  7. В основном вторичная обработка заключается в статистическом анализе итогов первичной обработки.
  8. Возникновение и обработка запаздываний.
  9. Выбор инструментов для анимации и преобразование форматов файлов.
  10. Гигиеническая обработка рук
  11. Загрузка, обработка и выгрузка бутылок.
  12. ЗАДАНИЕ 8. Обработка списков

Если файл открыт в бинарном режиме, его можно записывать или считывать побайтно. Функция 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].

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)