Я пишу программу, которая помещает каждую строку текста в узел в связанном списке. Я хочу создать новый узел для каждой строки в тексте. Программа аварийно завершает работу во время второго запуска цикла while. После некоторого тестирования я думаю, что это связано с функцией strncpy, но не уверен. Где я ошибаюсь?
#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);
}