0

リンクされたリストのノードにテキストの各行を配置するプログラムを書いています。テキストの各行に新しいノードを作成したいと考えています。while ループでの 2 回目の実行中にプログラムがクラッシュします。いくつかのテストの後、strncpy-function に関係していると思いますが、よくわかりません。ここでどこが間違っていますか?

#include <stdio.h>
#include <stdlib.h>
#define MAXBUF 50

struct node
{
    char data[MAXBUF];
    struct node *next;
};

int main(void)
{
    FILE *f;
    f = fopen("text.txt", "r");
    if (f == NULL) exit("ERROR\n");

    struct node *root = NULL;
    struct node *pointer = NULL;

    root = malloc(sizeof(struct node));
    pointer = root;

    char buf[MAXBUF];
    while(fgets(buf, MAXBUF, f) != NULL)
    {
        strncpy(pointer->data, buf, MAXBUF);
        pointer->next = malloc(sizeof(struct node));
        pointer->next = NULL;
        pointer = pointer->next;
    }
    fclose(f);
}
4

1 に答える 1