使用fread()时的Segfault

时间:2017-03-11 23:54:58

标签: c struct segmentation-fault 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在头文件中定义(构建器在.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...` 

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我试图在不存在的文件上使用fread,这会触发分段错误。我认为fopen(使用read选项)允许我创建一个文件,但这只能通过write和append来完成。