fput更改已保存,但新更改将还原以前的更改

时间:2019-04-14 10:54:14

标签: c++ fopen filereader fputs

我需要读取.txt文件,找到要更改的字符串,然后再次保存.txt文件。我希望该更改是永久的,这意味着,例如,如果我需要更改两个不同的内容,则第一个更改应保持不变。由于某种原因,当我运行代码进行新更改时,即使.txt文件实际上已更改,也将还原上一个代码,例如,如果我在.txt中有此更改

数据A = 2; 数据B = 0;

并运行代码以将“数据A”更改为5,如果再次打开.txt,它将显示为:

数据A = 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);

0 个答案:

没有答案