Изменения сохраняются, но новые отменяют предыдущие - PullRequest
0 голосов
/ 14 апреля 2019

Мне нужно прочитать файл .txt, найти строку для его изменения и затем снова сохранить файл .txt. Я хочу, чтобы это изменение было постоянным, то есть, если мне, например, нужно изменить две разные вещи, первое изменение должно остаться таким. По какой-то причине, когда я запускаю код для внесения нового изменения, предыдущий отменяется, даже если файл .txt действительно изменился, например, если у меня есть это в .txt

Данные A = 2; Данные B = 0;

и запустите код, чтобы изменить «Данные A» на 5, если я снова открою .txt, он будет выглядеть так:

Данные А = 5; Данные B = 0;

Если я запускаю его снова, чтобы изменить «Данные B» на 3, если я снова открою .txt, он будет читать:

Данные A = 2; Данные B = 3;

что я не могу понять, если файл сохранен. Почему .txt сохраняется, а «старые значения» перезаписываются?

// Extract text from file
FileReader file("config.txt");
char* text = (char*)malloc(file.size() + 1);
file.read(text, file.size());
text[file.size()] = 0;
std::string str = text;

// Do some changes
std::string newstr = str;
newstr.replace(7,1,"5");
char *newText = new char[newstr.size() + 1];
newstr.copy(newText, newstr.size() + 1);
newText[newstr.size()] = '\0';

// Write to file again
file.close();
FILE* configFile;
configFile = fopen("config.txt", "w");
fputs(newText, configFile);
fclose(configFile);
...