Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Чтение и запись структурСтр 1 из 11Следующая ⇒
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); }
|