Эта функция предназначена для удаления записи в текстовом файле. Однако, когда программа запущена, программа продолжает цикл, нужно остановить ее вручную.
void delete_record(RECORDS record[], int rows) { char name[30], id[5], line[200]; int index = -1; ifstream infile; infile.open ("StaffRecord.txt"); ofstream temp; temp.open("temp.txt"); cin.ignore(); cout << "Please enter the name to delete : "; cin.getline(record[rows].staff_name, 25); cout << "\nPlease enter the id to delete : "; cin.getline(record[rows].staff_id, 5); while (infile)//get record in text file { infile.getline(record[++index].staff_name, 24, '\t'); infile.getline(record[index].staff_id, 9, '\t'); infile.getline(record[index].position, 22, '\t'); infile.getline(record[index].IC_No, 15, '\t'); infile.getline(record[index].date_joined, 11, '\t'); infile.getline(record[index].address, 15, '\t'); infile.getline(record[index].contact_no, 12, '\n'); } for (int i = 0; i < rows; i++) { if (strcmp(name, record[i].staff_name) != 0 && strcmp(id, record[i].staff_id) != 0) { temp << left << setw(24) << record[i].staff_name << left << setw(8) << record[i].staff_id << left << setw(24) << record[i].position << left << setw(16) << record[i].IC_No << left << setw(16) << record[i].date_joined << left << setw(16) << record[i].address << left << setw(11) << record[i].contact_no << endl; } } temp.close(); infile.close(); remove("StaffRecord.txt"); rename("temp.txt", "StaffRecord.txt"); }
Что я уже пробовал:
Я пытался использовать вектор, но программа также продолжает зацикливаться.