Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Обработка бинарных файлов (Помогите плиз)
Обработка бинарных файлов
Запись имеет вид: название инструмента, число, месяц и год изготовления. Вывести на печать информацию об инструменте с самым большим сроком использования и выполнить корректировку этой записи.

Есть в С++ необходимо написать в Си

#include <cstdlib>
#include <iostream>

using namespace std;

structinstr {char name[20]; intdd; int mm; intyy;} i1;

voidinput(FILE *); // создание нового файла
voidprint(FILE *); // просмотр файла
voidadd(FILE *); // добавление в файл
voidfind(FILE *); // поиск и изменение

int main(intargc, char *argv[])
{
system("chcp 1251 >nul"); //пишем по-русски
char c;
FILE *F; //файл
while (1) {
system("CLS"); //очисткаэкрана
cout<< " 1 – новыйфайл" <<endl;
cout<< " 2 – просмотр файла" <<endl;
cout<< " 3 – добавление в файл" <<endl;
cout<< " 4 – поиск и изменение" <<endl;
cout<< " 0 - выход" <<endl;
cin>> c;
switch© { //меню
case '1' : input(F); break;
case '2' : print(F); break;
case '3' : add(F); break;
case '4' : find(F); break;
case '0' : system("PAUSE"); return EXIT_SUCCESS;
default :cout<< " неверный режим" <<endl; };
}
}

void input(FILE *F)
{
char c;
F=fopen("file1.dat","wb"); // открытие бинарного файла для записи
system("CLS");
cout<< "Вводинструментов" <<endl;
do
{ cout<< " Название: "; cin>> i1.name;
cout<< " Число: "; cin>> i1.dd;
cout<< " Месяц: "; cin>> i1.mm;
cout<< " Год: "; cin>> i1.yy;
fwrite(&i1,sizeof(i1),1,F); // запись в файл одной структуры i1
cout<< "\n Закончить? y/n ";
cin>> c;
}
while (c != 'y');
fclose(F);
system("PAUSE");
}

void print(FILE *F)
{
system("CLS");
F=fopen("file1.dat","rb"); // открытиебинарногофайладлячтения
fread(&i1,sizeof(i1),1,F); // чтение из файла одной структуры i1
cout<< "Инструмент Число Месяц Год" <<endl;
while (!feof(F)) {
cout<< i1.name << " " << i1.dd << " "
<< i1.mm << " " << i1.yy <<endl;
fread(&i1,sizeof(i1),1,F); }
system("PAUSE");
}

void add(FILE *F)
{
char c;
F=fopen("file1.dat","ab"); // открытиебинарногофайла
system("CLS"); // для добавления
cout<< "Ввод инструментов" <<endl;
do {
cout<< " Название: "; cin>> i1.name;
cout<< " Число: "; cin>> i1.dd;
cout<< " Месяц: "; cin>> i1.mm;
cout<< " Год: "; cin>> i1.yy;
fwrite(&i1,sizeof(i1),1,F);
cout<< "\n Закончить? y/n ";
cin>> c; }
while (c != 'y');
fclose(F);
system("PAUSE");
}

void find(FILE *F)
{
charc,inst[20];
longinti;
F=fopen("file1.dat","rb+"); // открытие бинарного файла
system("CLS"); // для чтения и записи
cout<< " Название искомого инструмента: ";
cin>>inst;
fread(&i1,sizeof(i1),1,F);
cout<< "Инструмент Число Месяц Год" <<endl;
while (!feof(F))
{
if (strcmp(i1.name,inst)==0)
{
cout<< i1.name << " " << i1.dd
<< " " << i1.mm << " " << i1.yy <<endl
<< " Изменить? y/n ";
cin>> c;
if (c == 'y')
{
cout<< " Число: "; cin>> i1.dd;
cout<< " Месяц: "; cin>> i1.mm;
cout<< " Год: "; cin>> i1.yy;
i=sizeof(i1);
fseek(F,-i,1);
// возврат на sizeof(t1) байт назад
fwrite(&i1,sizeof(i1),1,F);
// запись изменённой структуры
// на прежнее место
cout<< i1.name
<< " " << i1.dd
<< " " << i1.mm
<< " " << i1.yy
<<endl;
break;
}
if (c == 'n') break;
}
fread(&i1,sizeof(i1),1,F);
}
fclose(F);
system("PAUSE");
}
1 | Автор: StudentUstal | 2012-12-13, 12:43   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Обработка бинарных файлов (Помогите плиз)
Страница 1 из 11
Поиск: