Tôi gặp sự cố, khi tôi cố gắng đọc char* professeur
trong tệp nhị phân không thành công, cho tôi lỗi phân đoạn trong hàm read()
. Điều kỳ lạ là đối với tất cả các hàm load
khác trong các lớp khác để đọc char*
thành viên chỉ hoạt động tốt nhưng đối với thành viên này, ngay cả khi professeur
được viết chính xác trong tôi đã nhận được lỗi seg.C++ - lỗi phân đoạn đọc tệp nhị phân
Vì vậy, đây là mã:
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&);
};
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));
cout<<"n: "<<n<<endl;
if(i.read(buff, n+1))//seg fault
{
strcpy(professeur, buff);
cout<<"prof: "<<professeur<<endl;
}
else
cout<<"erreur read prof cours"<<endl;
groupes.load(i);
Event::load(i);
}
'cout <<" n: "<< n << endl;' nói gì? Bạn đang đọc qua bộ đệm? –
n cho độ dài của professeur trong tập tin, và nó cho nó một cách chính xác.Không có độ dài của bài kiểm tra I useg là 14 vì vậy không có không ở tất cả –
Bạn đã thử gỡ lỗi chưa? – Koshinae