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

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



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

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

Return 0;

}

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

return 0;

}

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

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

}

 


Дата добавления: 2015-11-04; просмотров: 24 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Поурочное планирование разработано на основе программы учебного предмета «Литературное чтение» для 1 класса основной образовательной программы начального общего образования МКОУ «Средняя школа № 2» | Тексты для проверки техники чтения (5 класс)

mybiblioteka.su - 2015-2024 год. (0.01 сек.)