gpt4 book ai didi

c - char的返回链 - C中的getgrouplist

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

我对返回的字符有疑问。我知道如果它是一个字符串,我必须分配内存并分配给选项卡。但它是一个字符。我不知道应该去哪一边:创建双数组 (char * tab[char 数][words 数]) 或尝试连接。函数必须返回字符链(例如:[用户、root、sudo])。

这是我的功能:

char * groupsName(char *ut ){ //ut it's a user nick
struct group *gr;
int i;
struct passwd *pw;
gid_t *groups;
int ngroups=0;
char * tab= malloc ( sizeof (char) * ngroups)
pw =getpwnam(ut);
if(getgrouplist(ut, pw->pw_gid, groups, &ngroups)<0){
groups=malloc(ngroups *sizeof(gid_t));
getgrouplist(ut, pw->pw_gid, groups, &ngroups);

for(i=0;i<ngroups;i++){
gr=getgrgid(groups[i]);
if(gr!= NULL) tab[i] = gr->gr_name;
}
return *tab;
}

}

最佳答案

tab 是一个字符数组。如果你想要一个字符串数组(一个字符数组的数组),如 ["user", "root", "sudo"],你可以使用一个

char **tab = (char **) malloc(sizeof(char *) * ngroups));

另请注意,malloc 现在使用 sizeof(char *) 而不是 sizeof(char)。

然后是:

tab[i] = gr->gr_name;    

我假设 gr_name 是一个指向组名的指针,并且在函数之后仍然可以访问。

现在我可能理解错了你的问题,因为它不是很清楚。无论哪种方式,如果您返回 tab,您想要返回指向它的指针而不是取消引用它:

return tab;

如果您返回*tab,您将返回tab指向的第一个字符。

关于c - char的返回链 - C中的getgrouplist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55071263/

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