gpt4 book ai didi

c - C 中的全局指针未正确更新

转载 作者:太空宇宙 更新时间:2023-11-04 05:36:35 24 4
gpt4 key购买 nike

我正在做一项学校作业,我被困在我的链表全局变量上。根据要求,我有一个调用 loadFile() 函数的主函数。此函数检查接受输入并将其标记化,然后将单词添加到链表中。 loadFile() 函数调用 insert() 函数创建一个节点并将其添加到列表中。这个问题是,如果我从 loadFile() 函数打印,列表工作正常,但如果我尝试从 main 函数打印,则列表无法正常工作。我将节点的头部作为全局变量,但这似乎不起作用。

Node  **headNode = NULL;
Node **curr = NULL;

Boolean insert( char *new_string ){
Node *temp = (Node *)malloc(sizeof(Node));
temp->item = new_string;
if(headNode == NULL){
temp->next = NULL;
headNode = &temp;
}
else{
temp->next = (*headNode);
headNode = &temp;
}
return true;
}

void loadFile()
{
#define LINE_SIZE 256
char input[LINE_SIZE];
char *token = NULL;

while ( fgets( input, LINE_SIZE, stdin ) )
{
// parse the data into separate elements
token = strtok( input, " \t\n" );
while ( token )
{
insert( token );

token = strtok( NULL, " \t\n" );
}
}
}

最佳答案

问题最有可能在行中:

temp->item = new_string;

new_stringloadFile 的本地指针。当您从 loadFile 返回时,指针无效。

替换为

temp->item = strdup(new_string);

strdup 不是标准库函数,但您可以很容易地实现它。在网上查一下。

关于c - C 中的全局指针未正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33429736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com