作者:mobiledu2502858723 | 来源:互联网 | 2023-10-10 18:40
file.open("C:\\file.txt", ios::binary | ios::in );
for(nIndex = 0; nIndex < 3; nIndex++)
{
file.read((char*)&infoGet[nIndex], sizeof(Info));
cout<<"Number = "<
<<"Name = "< }
file.close();
file.open("C:\\file.txt", ios::binary | ios::out);
file.seekg(sizeof(Info) * 2, ios::beg);
Info newInfo;
newInfo.nNum = 20;
strcpy(newInfo.szName, "NewName");
file.write((char*)&newInfo, sizeof(info));
file.close();
为什么这样程序会把先前的数据弄不见了。
9 个解决方案
file.open("C:\\file.txt", ios::binary ¦ ios::out);
改成
file.open("C:\\file.txt", ios::binary ¦ ios::app);
就好 了
问题是,总是在文件后边插入数据,不是在我指定的位置覆盖数据的?
貌似记得以in out binary的方式打开的时候,不会格式化数据的.
file.seekp(sizeof(Info) * 2, ios::beg);//移动到第二个数据后,第三个数据开始前写入,可是总是不成功。
这不能移动到第2个数据后,你前面两个数据记录的长度不是sizeof(Info) * 2