朱倩倩zqq 2021-06-03 22:02 采纳率: 75%
浏览 24
已结题

关于文件输出,输入流的问题(求大佬解决)

#pragma warning (disable:4996)
#include<iostream>
#include<fstream>
using namespace std;
class student
{
private:
    char name[20];
    long number;
    char bianji[20];
public:
    student(const char *_name="dsf", long _number=122, const  char _bianji[]="dcs") :number(_number)
    {
        strcpy(name, _name);
        strcpy(bianji, _bianji);
    }
    void print()
    {
        cout << "学生姓名:" << name << endl;
        cout << "学生学号:" << number << endl;
        cout << "学生班级:" << bianji << endl;
    }
    void set( char* _name , long _number, char* _bianji)
    {
        strcpy(name, _name);
        number = _number;
        strcpy(bianji, _bianji);

    }
};
int main()
{
    cout << "输入多少学生信息:" << endl;
    int n;
    cin >> n;
    char name[20];
    long number;
    char banji[20];
    student* p = new student[n];
    for (int i = 0; i < n; i++)
    {
        cout << "输入学生姓名:" << endl;
        cin >> name;
        cout << "输入学生学号:" << endl;
        cin >> number;
        cout << "输入学生班级:" << endl;
        cin >> banji;
         p[i].set(name, number, banji);
    }
    ofstream ofile("d://student.dat", ios::out|ios::binary );
    if (!ofile.fail())
    {
        ofile.write((char*)&p, sizeof(p));
    }
    ofile.close();
    ifstream ifile("d:\\student.dat", ios::in|ios::binary);
    student* m = new student[n];
    if (!ifile.fail())
    {
        ifile.read((char*)&m, sizeof(m));
    }
    for (int i = 0; i < n; i++)
    {
        m[i].print();
    }
    ifile.close();
    return 0;
}

注:可以在显示屏上显示出来

但是却无法在文件上显示出来。

点开student.dat,里面出现了乱码。

  • 写回答

4条回答 默认 最新

  • qfl_sdu 2021-06-04 01:12
    关注

    ofile.write((char*)&p, sizeof(p));这里,p是一个指针,sizeof(p)的大小是4,而且,p本身已经是指针了,不用再取地址了,应该改成:

    ofile.write((char*)p, sizeof(n* sizeof(student)));

    还有就是,

    ofstream ofile("d://student.dat", ios::out|ios::binary );这里,如果是写txt的话,第二个参数不用填,默认文本方式写入,不要使用二进制,否则可能还会出现乱码。(当然,读文件那里也是一样,要保持读和写的模式一致)

     

    如有帮助,请采纳一下,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月15日
  • 已采纳回答 9月7日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么