在while循环中创建链接列表时出现问题.第二次运行循环时出现运行时错误



我正在编写一个程序,将文本的每一行放在链表的节点中。我想为文本中的每一行创建一个新节点。程序在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("ERRORn");
    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);
}
pointer->next = NULL;
pointer = pointer->next;

因此,下一次循环:

while(fgets(buf, MAXBUF, f) != NULL)
    {
        strncpy(pointer->data, buf, MAXBUF);

指针->数据将遵循NULL。您可能想在strncpy之前测试指针是否为NULL,并在那里创建一个malloc'd节点。

请注意,您似乎也从未释放过这些节点中的任何一个。

相关内容

  • 没有找到相关文章

最新更新