这是我的学生结构,其中包含我通过二进制读取的信息
typedef struct student_t {
//data in here
} student_t;
这就是我在 main 中声明它们的方式
double_linkedlist_t* listPtr;
student_t students;
node_t* node = NULLL;
这就是我的文件的初始化方式
FILE *file;
printf("What file would you like to select?\n");
fgets( filename, MAX_NAME_LENGTH, stdin );
strtok(filename, "\n");
fflush(stdin);
file = fopen(filename, "rb+wb");
这就是我的 fwrite 在我的 main 中的样子。我不断遇到分段错误,我看到的所有关于如何将双向链表写入二进制文件的示例都让你这样做了。所以我来这里是为了解释我所拥有的原因或可能会发生一些变化。我还将我的双向链表声明为 main 中的 listPtr,并将我的节点声明为节点。
这是我的初始化
node_t* Init_Node( student_t data )
{
node_t* node = (node_t*) malloc( sizeof( node_t ) );
node -> students = data;
node->nextPtr = NULL;
node->prevPtr = NULL;
return node;
}
这是我的节点结构以及 nodeinit 的原型
typedef struct node_t
{
student_t students;
struct node_t* nextPtr;
struct node_t* prevPtr;
} node_t;
//prototypes
node_t* Init_Node( student_t );
node = listPtr->headPtr; //segmentation faults here
while(node!=NULL)
{
fwrite(node, sizeof(student_t), 1, file);
node=node->nextPtr;
}
任何有关为什么会发生这种情况的帮助将不胜感激,我从来没有真正写入具有双向链表的二进制文件:/。