gpt4 book ai didi

C 返回字符串数组

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:23 24 4
gpt4 key购买 nike

我希望这个程序返回一个数组,然后从 main 中返回一个变量,以便从函数中获取这个数组,并可用于必须根据初始变量中的这些值验证字符串的代码部分。但是变量没有得到返回的数组。我看到一些帖子说你不能在 C 中返回数组,但我也看到其他帖子说这是可能的。

但是我想知道我能做些什么来捕捉这个返回值。

int getUsers()
{
char userVect[5][25];
char user[24];
int i = 0, j = 0, k;

FILE *usernames;
usernames = fopen("usernames.cfg", "r");
if (usernames == NULL){
perror("usernames - err");
return(-1);
}

while(fgets(user, sizeof(user), usernames) !=NULL){
strcpy(userVect[j], user);
j++;
}

fclose(usernames);
for(k=0; k<j; k++)
printf("Usernames are: %s\n", userVect[k]);

return userVect;
}

int main()
{
printf("\nWelcome to Sys v1.24. To start off, please insert your command. \n");
char *users;
users = getUsers();
printf("%c\n", users);

return 0;
}

最佳答案

1.您想返回一个字符串并且您的函数的类型是int??

我看到你返回了一个二维数组,那么你的函数应该是char **类型 -

char **getUser(void)

2. 您从函数返回局部变量 (userVect)。您不能在 function block 之外访问它。

您应该在函数 getUser 中执行此操作-

char **userVect;
userVect=malloc(5*sizeof(char **)); //allocate memory
for(int i=0;i<5;i++)
userVect[i]=malloc(25*sizeof(char));

然后在 main 中执行此操作 -

char **user;
...
user=getUsers(); // call function

3. 并在 main 中打印user -

for(int i=0;i<5;i++)
printf("%s\n", user[i]); //this is wrong in your code- printf("%c\n", users);

然后在 mainfree 然后结束-

for(int i=0;i<5;i++)
free(user[i]);
free(user);

关于C 返回字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459843/

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