gpt4 book ai didi

c - 将 glist 指针作为参数传递以反射(reflect)列表中的更改不起作用

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

我想将 glist 指针传递给该函数,以便我可以在 main 函数中获取更改后的值。

我的代码是:

#include <stdio.h>
#include <string.h>
#include <glib.h>

char *col_trim_whitespace(char *str)
{
char *end;

// Trim leading space
while(isspace(*str)) str++;

if(*str == 0) // All spaces?
return str;

// Trim trailing space
end = str + strlen(str) - 1;
while(end > str && isspace(*end)) end--;

// Write new null terminator
*(end+1) = 0;

return str;
}


void line_parser(char *str,GSList* list1)
{
GSList* list = NULL;
char *token, *remstr=NULL ;

token = strtok_r(str,"\n",&remstr);
while(token != NULL)
{
if(token[0] == ' ')
{

token = col_trim_whitespace(token);
if(strcmp(token,"")==0)
{
token = strtok_r(NULL, "\n", &remstr);
continue;
}
}
list1 = g_slist_append(list1, token);
token = strtok_r(NULL,"\n",&remstr);
}

}

int main()
{

int *av,i,j,length;
i=0;

char str[] = " this name of \n the pet is the ffffffffffffffffffffffffffffff\n is \n the \n test\n program";


//GSList *list1 = line_parser(str);
GSList *list1 = NULL;
line_parser(str,list1 );
// printf("The list is now %d items long\n", g_slist_length(list));
length = g_slist_length(list1);
// printf("length=%d", length);

for(j=0;j<length;j++)
{
printf("string = %s\n",(char *)g_slist_nth(list1,j)->data);
}

g_slist_free(list1);

return 0;
}

这里我在 main 函数中有一个列表名称 list1,然后我将 list1 作为参数传递给 lineparser() 函数,其中该列表已更改,附加了一些值。我想将值返回给 main() 函数,但不使用 return 语句,因为我在传递参数时使用了指针引用。但该值不会返回到 main() 函数。我怎样才能做到这一点?

最佳答案

似乎您想传递列表指针的地址,然后让解析器更新该变量:

void line_parser(char *str,GSList **list1)
{
...
*list1= list;
}

主要是:

main()
{
GSList *list1 = NULL;
line_parser(str, &list1);
...
}

关于c - 将 glist 指针作为参数传递以反射(reflect)列表中的更改不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31803299/

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