Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Чтение и запись структур






 

struct Client {

int Num;

char SurName[27];

char Name[21];

char SecName[21];

};

 

void main (void){

FILE *stream;

Client AClient, RClient;

 

//Открываем файл для вывода

if ((stream = fopen(" d: \\SAMPLE.DAT", " wb")) == NULL){

printf(RUS(" Файл не открыт для записи\n"));

getch();

return 1;

}

 

AClient.Num = 1;

strcpy(AClient.SurName, " Petrov");

strcpy(AClient.Name, " Petr");

strcpy(AClient.SecName, " Petrovich");

 

//Запись структуры в файл

fwrite(& AClient, sizeof(AClient), 1, stream);

 

//Закрываем файл

fclose (stream);

 

//Открываем файл для чтения

if ((stream = fopen (" d: \\SAMPLE.DAT ", " rb")) == NULL){

printf (RUS(" Файл не открыт для чтения\n"));

getch();

return 2;

}

 

fread(& RClient, sizeof (RClient), 1, stream);

 

//Закрываем файл

fclose (stream);

 

printf (" The structure contains: \n ");

printf (" Num = %d SurName = %s Name = %s SecName = %s",

RClient. Num, RClient. SurName, RClient. Name, RClient. SecName);

 

struct Client{

int Num;

char SurName[27];

char Name[21];

char SecName[21];

};

 

FILE *stream;

Client AClient, RClient;

 

//Открываем файл для вывода

if ((stream = fopen(" d: \\SAMPLE.DAT", " wb")) == NULL)

{

printf(RUS(" Файл не открыт для записи\n"));

getch();

return 1;

}

 

AClient.Num = 1;

strcpy(AClient.SurName, " Petrov");

strcpy(AClient.Name, " Petr");

strcpy(AClient.SecName, " Petrovich");

 

//Запись структуры в файл

fwrite(& AClient, sizeof(AClient), 1, stream);

long int pos = ftell(stream);

 

//Выводим позицию файла и длину структуры

printf(" The file pos = %d structure length = %d\n", pos, sizeof(AClient));

//Репозиционируем файл

rewind(stream);

 

//Открываем файл для чтения

if ((stream = fopen (" d: \\SAMPLE.DAT ", " rb")) == NULL)

{

printf (RUS(" Файл не открыт для чтения\n"));

getch();

return 2;

}

fread(& RClient, sizeof (RClient), 1, stream);

 

//Закрываем файл

fclose (stream);

 

// форматизованный взвод прочитанного

printf (" The structure contains: \n ");

printf (" Num = %d SurName = %s Name = %s SecName = %s",

RClient. Num, RClient. SurName, RClient. Name, RClient. SecName);

 

// копирование из файла в файл

// создаем файлы

FILE *fi, *fo;

if((fi = fopen(" d: \\file.txt", " r")) == 0){

cout< < " Ошибка открытия входного файла"; return 1;

}

if((fo = fopen(" d: \\binfile.out", " w+b")) == 0){

cout< < " Ошибка открытия выходного файла"; return 1;

}

 

// здесь будет строка из всех полей структуры

const int dl = 80;

char s[dl];

 

// создаем структуру и сразу обьявляем экземпляр mon

struct{

char type[20];

int opt, rozn;

char comm[40];

}mon;

 

 

// осуществляем построчные чтение и запись в файл структурных элементов

int kol = 0; // Количество записей в файле

 

while (fgets(s, dl, fi)) // читаем строку:

{

strncpy(mon.type, s, 19); // из строки 19 символов в mon.type

mon.type[19]='\0'; // это – конец строки (20 символ)

mon.opt = atoi(& s[20]); // строку цифр преобразуем в число

mon.rozn = atoi(& s[25]); //

 

strncpy(mon.comm, & s[30], 40);

 

// записываем в файл

fwrite(& mon, sizeof mon, 1, fo);

kol++;

}

 

fclose(fi);

 

int i;

cout< < RUS(" \nВведите номер записи ");

cin > > i; // Номер записи

if (i > = kol) {

cout < < " Запись не существует"; return 1;

}

// Установка указателя текущей позиции файла на запись i:

fseek(fo, (sizeof mon)*i, SEEK_SET);

 

fread(& mon, sizeof mon, 1, fo);

 

cout < < " mon. type " < < mon.type < < " opt " < < mon.opt

< < " rozn " < < mon.rozn < < endl;

fclose(fo);

}

 

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал