Member 13352712 Ответов: 1

Эта функция предназначена для удаления записи в текстовом файле. Однако, когда программа запущена, программа продолжает цикл, нужно остановить ее вручную.


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


Что я уже пробовал:

Я пытался использовать вектор, но программа также продолжает зацикливаться.

1 Ответов

Рейтинг:
1

Patrice T

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.