Итак, у меня есть запись о студентах, например:
name,age,contact
name2,age2,contact2
name3,age3,contact3
Задача - удалить запись, выполнив поиск по имени. Проблема в том, что мой код удаляет все данные, начиная с поиска по имени. Например, если мне нужно удалить запись name2, данные должны быть:
name,age,contact
name3,age3,contact3
Но мой код делает:
name,age,contact
, таким образом, удаляя все имеющиеся данные вниз, если они находит имя. Застрял в этой проблеме .. Вот код:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
char names[30], search[30], contact[30];
int i = 0, j = 0, age=0;
bool flag;
cout << "Enter name from records : ";
cin.ignore();
cin.getline(search, 19);
ifstream fin;
fin.open("studentinfo.txt");
ofstream fout;
fout.open("output.txt");
if (fin.is_open())
{
while (!fin.eof())
{
flag = true;
fin.getline(names, 19, ',');
fin >> age;
fin.ignore();
fin >> contact;
fin.ignore();
if (names[i] == search[j])
{
while (names[i] == search[j] && names[i] != ',' && search[j] != '\0')
{
i++;
j++;
}
if (search[j] == '\0')
{
flag = false;
}
}
else if(flag == true)
fout << names << ',' << age << ',' << contact << endl;
}
fin.close();
fout.close();
}
else
{
cout << "file not found \n" << endl;
return 0;
}
}