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

Если файл открыт в бинарном режиме, его можно записывать или считывать побайтно. Функция fseek() позволяет обращаться с бинарным файлом как с массивом и переходить к любой позиции в файле, обеспечивая возможность произвольного доступа. Если текстовые файлы являются файлами с последовательным доступом, то к бинарным файлам может применяться произвольный доступ.

Составим программу создания нового файла с информацией о городах: код, название, численность жителей.

#include "stdafx.h"

#include <conio.h>

typedef struct city

{ int kod;

char name[10];

long c; } town;

town 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); //запись в файл одной структуры t

printf("\n END Закончить? y/n ");

ch=getch();

}

while (ch!= 'y');

fclose(f);

}

Выполнение этой программы приведет к созданию бинарного файла с информацией о городах.

Рассмотрим еще одну программу, которая будет читать из файла информацию о городах и выводить на экран список городов, количество жителей в которых превышает миллион.

#include "stdafx.h"

#include <conio.h>

typedef struct city

{ int kod;

char name[10];

long c; } town;

town 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);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: