これは、バイナリ経由で読み込んだ情報を含む私の学生の構造体です
typedef struct student_t {
//data in here
} student_t;
これは私がそれらをメインで宣言した方法です
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 で listPtr として宣言された二重リンク リストと、node としてのノードがあります。
これは私のイニシャルです
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;
}
なぜこれが起こっているのかについての助けをいただければ幸いです。二重にリンクされたリストを含むバイナリファイルに実際に書き込んだことはありません:/.