В моей лабораторной работе мы должны читать данные из txt и записывать их в .dat-файл в виде двоичного формата, тогда мы должны искать и находить данные по заданному идентификатору в двоичном файле. Наш worker.txt
файл в этом форматеЧтение и поиск данных из двоичного файла
:
ID firstname lastname age salary
как:
341 Alex Morgan 32 3400
234 Jessica Gibson 28 2000
...
Программа считывает эти ДАННЫЕ записывает все они worker.dat в виде двоичного файла.
Проблема заключается в том, когда введен правильный идентификатор для поиска программы, найдите и распечатайте ее, а затем закройте с ошибкой завершения работы Windows, мне нужна ваша помощь для ее обработки. Функция
Мои searchByID:
void searchByID(int key)
{
bool find=false;
int id,age,sal;
string fn,ln;
ifstream InFile;
InFile.open("worker.dat", ios::in | ios::binary);
int i = getSize(initialArr);
int j;
for(j=0; j<i; j++){
InFile.read((char*)&id, sizeof(int));
InFile.read((char*)&fn, sizeof(string));
InFile.read((char*)&ln, sizeof(string));
InFile.read((char*)&age, sizeof(int));
InFile.read((char*)&sal, sizeof(int));
if(id == key)
{
cout << "Datas for Entered ID:\n"
<< id <<" "<< fn <<" "
<< ln <<" "<< age <<" "
<< sal << endl;
find = true;
}
}
if(!find)
cout << "Entered ID not Found on File" << endl;
InFile.close();
}
Это текстовый файл не бинарный файл. – Hogan
Вы описываете формат 'worker.txt', но не формат' worker.dat' – Hogan
Сначала программа считывает данные из файла txt, затем записывает всю информацию в двоичный файл, вы можете получить двоичный файл по этой ссылке: http: // www.speedyshare.com/97mth/worker.dat –