我遇到了一个问题,当我尝试读取 char* professeur二进制文件时它失败了,在read()函数中给我一个分段错误.奇怪的是,对于load其他类中的所有其他函数来说,读取char*成员的工作正常但是对于这一个,即使professeur在我得到一个seg错误中正确写入.
所以这是代码:
Cours.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;
#include "Liste.h"
#include "Event.h"
#include "Professeur.h"
class Cours: public Event
{
private:
char* professeur;
Liste<int> groupes;
public:
void save(ofstream&) const;
void load(ifstream&);
};
Run Code Online (Sandbox Code Playgroud)
Cours.cpp
void Cours::save(ofstream& o) const
{
int n=strlen(professeur);
char buff[60], *buff2;
o.write((char *)&n, sizeof(int));
strcpy(buff, getProfesseur());
o.write(buff, n+1);
groupes.save(o);
Event::save(o);
}
void Cours::load(ifstream& i)
{
int n;
char buff[60];
i.read((char *)&n, sizeof(int)); …Run Code Online (Sandbox Code Playgroud)