1

我正在自学链表,并提出了一个要解决的基本问题。我想逐行读取一个具有名称的文本文件并将每个名称添加到我的链接列表中。

文本文件的一个示例是:

John
Jacob
Jingleheimer
Smith

我无法弄清楚如何动态添加到我建议的链接列表中。这是我到目前为止所拥有的。

#include <stdio.h>
#include <stdlib.h>



int main(void)
{
    struct node {
        char *name;
        struct node* next;
    };


    static const char* fileName = "test.txt";
    FILE *fp = fopen(fileName,"r");
    char *line = NULL;
    size_t len = 0;
    ssize_t read;

    struct node* head = NULL; // first node

    if (fp == NULL)
        exit(EXIT_FAILURE);

    while ((read = getline(&line, &len, fp)) != -1)
    {
        //add line of text to linked list
    }
    if (line)
        free(line);

       exit(EXIT_SUCCESS);

}

任何指向正确方向的指针都会有所帮助。

4

2 回答 2

3

好的,要做到这一点,您需要首先分配一个节点条目,然后将您刚刚读取的行复制到其中。然后将其添加到列表中。(我省略了错误处理,例如 malloc 返回 NULL)。

/* This will store the last read line first */
while ((read = getline(&line, &len, fp)) != -1)
{
    struct node *n = malloc(sizeof(*n));
    n->name = strdup(line); /* copy the line since it can get reused by getline */
    n->next = head;
    head = n;
}
于 2012-12-01T23:22:46.643 回答
0

分配内存来保存字符串,将 memory = 设置为字符串。然后

node *next = malloc(sizeof(node));
next->name = name;
next->next = NULL;
head->next = next;
head = next;
于 2012-12-01T23:22:40.123 回答