c语言文件改名和删除,C++ 如何创建和删除txt文件和给txt文件更名?

此篇博客详细描述了如何使用C++通过fstream操作,从newrecords.dat中根据指定账号删除记录。作者首先打开输入流,逐条读取并判断是否为目标账号,非目标账号则写入临时文件。接着,关闭原始文件,从临时文件重新读取并写回newrecords.dat,从而实现数据的高效替换。注意了关键错误处理和文件操作细节。
摘要由CSDN通过智能技术生成

void dispRecords::deleteAcount(int retrieve_AccNo)//根据指定的账号删除newrecords.dat中删除相应的记录

{

fstream filename;

filename.open("newrecords.dat",ios::in); //打开输入流用于读取newrecords.dat

fstream temp;

temp.open("calculations.txt",ios::out); //打开输出流用于创建临时文件calculations.txt

filename.seekg(0,ios::beg);

while(!filename.eof())

{

filename.read((char*)this,sizeof(dispRecords)); //读取一条record;看这写法dispRecords这类应该只有一个char指针或数组的成员变量

if(filename.eof()) //如果已经读完整个文件,退出循环;这里应该去掉,不然最后一条record就永远不可能删掉了

{

break;

}

if(AcountNumber!=retrieve_AccNo) // 如果读到的record的帐号不是要删除的,就写到临时文件calculations.txt里面去

{

temp.write((char*)this,sizeof(dispRecords));

}

}

filename.close(); // 关闭newrecords.dat对应的输入流

temp.close(); // 关闭临时文件calculations.txt对应的输出流

filename.open("newreords.dat",ios::out); // 打开输出流用于写newreords.dat文件;原来的文件应该会被清空

temp.read((char*)this,sizeof(disRecords)); // 从临时文件读取一条record;这行不对,应该删掉并且换成temp.open("calculations.txt",ios::in);

temp.seekg(0,ios::beg);

while(!temp.eof())

{

temp.read((char*)this,sizeof(disRecords)); // 从临时文件读取一条record

if(temp.eof()) // 如果已经读完整个文件,退出循环;这里应该去掉,不然最后一条record就丢了

{

break;

}

filename.write((char*)this,sizeof(disspRecords)); // 把当前record写入newreords.dat

}

filename.close(); // 关闭newrecords.dat对应的输出流

temp.close(); // 关闭临时文件calculations.txt对应的输入流

取消

评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值