在C语言中,如何把一个char类型的二维数组作为方法的返回值?

2025-03-12 03:34:28
推荐回答(2个)
回答1:

这样定义split函数:

char (*split(char *strs))[1024]
{
static char temp[1024][1024];
int i, j=0;
for (i=0; strs[i]!='\0'; i++)
{
temp[j][i]=strs[i];
if (strs[i]==' ') {
printf("%s\n", temp[j]);
j++;
}
}
return temp;
}

函数头很难看是不是,弄个typedef就简单明了多了:

//还有,代码有点问题,改了下
#include
typedef  char(*parr1024)[1024];
parr1024 split(char *strs)
{
static char temp[1024][1024];
int i, j=0,k=0;   //再定义个k
for (i=0; strs[i]!='\0'; i++)
{
temp[j][k++]=strs[i];   //用k
if (strs[i]==' ') {
printf("%s\n", temp[j]);
j++;
k=0;  //复位k
}
}
return temp;
}
int main() {
char aa[]="hello world "; //后面加个空格方便测试split函数的输出
split(aa);
return 0;
}

回答2:

C语言中函数不能直接返回一个二维数组。但是可以通过其他方法实现类似功能:
1、把二维数组定义为全局变量 这样可以直接在另一个函数中调用
2、把二维数组作为指针传入到第一个函数中 然后同样作为指针传到另一个函数中
3、动态分配内存 在赋值函数中动态分配 并用返回值返回,在另一个函数中进行访问