gpt4 book ai didi

c - 在函数 C 中返回 "char *tab[]"

转载 作者:行者123 更新时间:2023-11-30 18:46:13 26 4
gpt4 key购买 nike

我尝试创建一个函数来返回 char *tab[] 来填充 char *tab1[]

#include <stdio.h>
#include <string.h>
char * fill(){
char *tab[2];
tab[0] = "text 1";
tab[1] = "text 2";
return tab;
}

int main(){
char *tab1[2];
tab1 = fill();
return 0;
}

我尝试使用strcpy、strncpy、返回一个char **、malloc。我每次只能复制一个索引,比如 tab1[0] = tab[0],但我需要一次返回完整的数组。

我正在使用递归函数来填充 *tab[],为此我需要连接一些字符串和 var:

void fill(int n, char *x, char *y, char *z, char *tab[]){
int i;
char text[40];
if(n == 1){
strcpy(text, "text 1 ");
strcat(text, x);
strcat(text, " text 2 ");
strcat(text, y);

tab[0] = text;
} else if(tab[n-1] == ""){
strcpy(text, "text 1 ");
strcat(text, x);
strcat(text, " text 2 ");
strcat(text, z);
strcat(text, "\ntext 1 ");
strcat(text, z);
strcat(text, " text 2 ");
strcat(text, y);

tab[n-1] = text;
if(n-1 > 1){
fill(n-1, x, z, y, tab);
}
}
}

最后我需要返回 tab[] 来填充 main 中的另一个选项卡:

int main(){
int n = 2;
char *tab1[n];
fill(n, "a", "b", "c", tab1);
return 0;
}

最佳答案

首先,您的表是函数的本地表,并且它不存在于函数范围之外。

其次表不是指针你不能像你一样使用表作为指针并在主函数中分配它。

char ** fill()
{
char **tab = malloc(2 * sizeof (*tab));
tab[0] = "text 1";
tab[1] = "text 2";
return tab;
}

int main()
{
char **tab1;
tab1 = fill();
return 0;
}

关于c - 在函数 C 中返回 "char *tab[]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52562249/

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