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