c++文件流中想要删除文本文件中的某些字符串,为什么下面的代码删除那部分无法运行出来?

我想是的先把数据读进文件中,然后再打开,用原来的部分数据覆盖文件中的数据,可是下面这段代码的“修改”之后的部分运行出来的结果是错的,请问是怎么回事呢?
或者有没有更好的删除数据的办法?

#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;
int main()
{   
    int i=0;
    char a[100],b[100],c[100];  
    cout<<"请输入三条记录(每条记录以#结束):\n"
        <<"第一条:\n";
    cin.getline(a,100,'#'); 
    cout<<"第二条:\n";
    cin.getline(b,100,'#');
    cout<<"第三条:\n";
    cin.getline(c,100,'#');

    //导入数据
    ofstream outfile("student.dat");
    ofstream fcout("d:\\student.dat");
    if(fcout.fail())
    {   
        cerr<<"error opening file\n";
        return 0;
    }   
    fcout<<a<<endl<<b<<endl<<c<<endl;
    fcout.close();
    fcout.clear(); 

    //读取输出
    ifstream fcin("d:\\student.dat");
    if(fcin.fail())
    {   
        cerr<<"error opening file\n";
        return 0;
    }
    fcin.getline(a,100,'#');
    cout<<"删除前为:\n";
    cout<<a<<endl;
    fcin.close();
    fcin.clear(); 

    system("pause");

    //用 a和c这两个字符串 覆盖文件中的原来的数据,目的为了删除b这个字符串

    //删除--打开文件 
    if(fcout.fail())
    {
        cerr<<"error opening file\n";
        return 0;
    }
    fcout<<a<<endl<<c<<endl;
    fcout.close();

    //提取数据输出 
    if(fcin.fail())
    {
        cerr<<"error opening file\n";
        return 0;
    }
    fcin.getline(a,100,'#');
    cout<<"删除后为:\n"<<a<<endl<<c<<endl;
    fcin.close();
    return 0;
}
查看全部
weixin_43599456
真无聊一人
2018/12/23 08:38
  • c++
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复