c语言怎么返回字符串数组?

char strcatf(char str1[],char str2[])[]
{
int i=-1,j=0;
while(str1[++i]!='\0'); //计算出的 i 就是字符串str1的长度
while(str2[j]!='\0') //将str2的字符复制给str1字符的后面,也就是第i个开始
str1[i++]=str2[j++];
str1[i]='\0'; //在最后加上字符串的结束符'\0'
return str1;
}
main()
{
printf("%s",strcatf(j,i));之前省略了其他代码,此处j,i为两个字符串数组(char X[ ])
}
错误代码只有一句,,,error C2090: function returns array,这该怎么处理?我想返回一个字符串数组,入股我的方法不行我该怎么处理?

C语言返回值不支持返回数组,不过可以通过返回指针类型,用以替代数组。在C语言中,数组大多数时候是可以用指针替代的。

不过需要注意的是,不能够返回在函数内部定义的局部变量数组,因为一旦函数退出,局部变量就会被释放,导致数组指针无效。
可以返回以下几种:
1 全局变量,或者全局变量空间内的一个地址。
2 静态局部变量,或者静态局部变量内部的一个地址。
3 从参数传入的数组/指针变量,或者在其上做的合法偏移。
4 在数组内部动态申请的空间首地址。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-22
1、在void strcat()的strcat前添加*,表示返回char 指针。
2、strcat()应该返回str1,即 return str1。str1是连接的结果,调用者有责任确保str1数组空间足够大,以便在其尾部添加str2后,不会覆盖其他数据空间。
第2个回答  2012-10-22
char * strcatf(char str1[],char str2[])
加一个*号即可,返回的就是指针类型
第3个回答  推荐于2017-10-15
char* strcatf(char str1[],char str2[]) //想放回字符串数组的话,就返回首地址。

{
...
return str1;
}追问

这里面的str1和穿过来的str1不同,返回值是str1和str2的连接吖

追答

char* strcatf(char str1[],char str2[])
{
int i=-1,j=0;
char *str = str1;
while(str1[++i]!='\0'); //计算出的 i 就是字符串str1的长度
while(str2[j]!='\0') //将str2的字符复制给str1字符的后面,也就是第i个开始
str1[i++]=str2[j++];
str1[i]='\0'; //在最后加上字符串的结束符'\0'
return str;
}

本回答被提问者和网友采纳
相似回答