我正在尝试读取包含以下内容的文件。
59878, Moby Dick
442419, The Peach
535, Moby Dick
12, History of War
我有一个保存整数类型的链表,另一个保存了char和链表指针。这是后一个链接列表中的一个节点:
typedef struct Node {
struct Node* prev;
char *title;
ListRef library; //Pointer to a different linked list
struct Node* next;
} Node;
typedef struct Node* NodeRef;
NodeRef newNode(char *bookTitle, List LL) {
NodeRef node = (Node*)malloc(sizeof(Node));
node->next = node->prev = NULL;
node->title = (char*)calloc(60, sizeof(char));
node->library = newList();
node->library = LL;
node->title = bookTitle;
return(node);
}
您应该将与title
一起存储
node->title = strdup(bookTitle);
删除该calloc
行,这strdup
将为您进行内存分配。
由于当前正在编写代码,因此您为字符串分配了内存,但随后为该行分配了内存
node->title = bookTitle;
将指针更改为指向指针所指向的缓冲区bookTitle
。据推测,您正在重用bookTitle
缓冲区,因此在程序结束时,所有标题都指向同一缓冲区,并且该缓冲区包含从文件读取的最后一个标题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句