使用 fread() 时的段错误
Segfault when using fread()
我在调用 fread()
时遇到分段错误,我只是想不出错误可能出在哪里:
`void charger(Repertoire* parent){
int i;
if (parent == 0){parent = &source;}
FILE* rep_file = fopen("repertoires.bin", "rb");
fread(parent, sizeof(Repertoire), 1, rep_file); //<-------------- here
fclose(rep_file);
//more code...`
作为参考,我的函数charger()
在这里被调用:
`int main(int argc, char* argv[]){
int i, j, path = 0;
source.nom = "/.";
disque = (char*) calloc(32000, sizeof(char));
charger(0);
//more code...`
而Repertoire是在一个头文件中定义的(builder是在.c文件中初始化的):
`typedef struct repertoire{
int taille;
int itaille;
char* nom;
struct repertoire* enfants;
int countup;
int icountup;
struct inode* fichiers;
} Repertoire;
Repertoire source;
//more code...`
有人可以帮忙吗?
我试图对一个不存在的文件使用 fread,这触发了分段错误。我以为 fopen(带有读取选项)允许我创建一个文件,但这只能通过写入和追加来完成。
我在调用 fread()
时遇到分段错误,我只是想不出错误可能出在哪里:
`void charger(Repertoire* parent){
int i;
if (parent == 0){parent = &source;}
FILE* rep_file = fopen("repertoires.bin", "rb");
fread(parent, sizeof(Repertoire), 1, rep_file); //<-------------- here
fclose(rep_file);
//more code...`
作为参考,我的函数charger()
在这里被调用:
`int main(int argc, char* argv[]){
int i, j, path = 0;
source.nom = "/.";
disque = (char*) calloc(32000, sizeof(char));
charger(0);
//more code...`
而Repertoire是在一个头文件中定义的(builder是在.c文件中初始化的):
`typedef struct repertoire{
int taille;
int itaille;
char* nom;
struct repertoire* enfants;
int countup;
int icountup;
struct inode* fichiers;
} Repertoire;
Repertoire source;
//more code...`
有人可以帮忙吗?
我试图对一个不存在的文件使用 fread,这触发了分段错误。我以为 fopen(带有读取选项)允许我创建一个文件,但这只能通过写入和追加来完成。