【问题标题】:how to append data on binary file?如何在二进制文件上附加数据?
【发布时间】:2019-09-20 07:58:35
【问题描述】:

我无法将数据附加到 bin 文件中。它总是被截断为 0 并开始写入文件请建议如何在文件上附加数据我已经尝试了一切

我曾尝试使用 class 和 fstream 和 iostream 库读取和写入人员身份数据

请建议我应该使用 fstream 库进行文件处理还是使用 C stdio.h 库

    class identity
    {
        int age;
        char name[20];
    public:
        identity()
        {}
        void getdata()  // input the data
        {
            cout<<"enter your name :";
            cin>>name;
            cout<<"\nenter your age :";
            cin>>age;
        }
        void putdata()  //display the data
        {
         cout<<"Name :"<<name<<endl;
         cout<<"age :"<<age<<endl;
        }
    };

    int main()
    { 
        int i;
        identity i1[2];
        ofstream fobj;
        //opening of Irecord file
        fobj.open("Irecord.dat",ios::out|ios::app|ios::binary);

        for(i=0;i<2;i++)
        {
           i1[i].getdata();
           fobj.write((char*)&i1[i],sizeof(i1[i]));      
        }

        ifstream fin("Irecord",ios::in|ios::binary);
        fin.seekg(0,ios::beg);
        for(i=0;i<20;i++)
        { 
          fin.read((char*)&i1[i],sizeof(i1[i]));
          i1[i].putdata();
        }
        cout<<endl;
        fobj.close();

        return 0;
    }

数据不会附加到文件中,它会被截断为 0。

【问题讨论】:

标签: c++ file oop


【解决方案1】:

更改:ifstream fin("Irecord.dat",ios::in|ios::binary);

您正试图打开一个不存在的文件。

在打开文件后立即在下方检查以查看打开调用是否成功。

if (!fin.is_open()) 
    {
        cout << "File opening failed";
    } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2017-05-12
    • 2011-08-05
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    相关资源
    最近更新 更多