从文件中逐行读取时的赋值

Assignment when reading line by line from file

GSList* getWordList() {
    GSList *list;
    list = NULL;

    FILE *fh;
    fh = fopen("words.txt", "r");

    char *s;
    size_t len = 0;
    ssize_t read;

    while ((read = getline(&s, &len, fh)) != -1) {
        list = g_slist_append(list,s);
    }
    fclose(fh);
    return list;
}

所以我有这段代码。我知道问题是 's' 总是等于我读到的最后一个字。我正在努力找出解决方案。

g_s_list_append 需要传递给它的 GPointer,但我每次迭代都会更改该值。

我是 C 语言的新手,我自己想参加速成班...我在想的是我需要为新的 char * 分配内存并将其设置为 s,然后将其提供给 g_slist_append。这个对吗?有更好的方法吗?

NULL 分配给 s 以避免将下一个单词读入先前分配给 s 的 space:

char *s = NULL; // Add initialization
size_t len = 0;
ssize_t read;

while ((read = getline(&s, &len, fh)) != -1) {
    list = g_slist_append(list, s);
    s = NULL; // Make sure that s's memory is not reused
}