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

charstrcatf(charstr1[],charstr2[])[]{inti=-1,j=0;while(str1[++i]!='\0');//计算出的i就是字符串s... 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,这该怎么处理?我想返回一个字符串数组,入股我的方法不行我该怎么处理?
展开
 我来答
风若远去何人留
推荐于2017-10-12 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部
C语言返回值不支持返回数组,不过可以通过返回指针类型,用以替代数组。在C语言中,数组大多数时候是可以用指针替代的。

不过需要注意的是,不能够返回在函数内部定义的局部变量数组,因为一旦函数退出,局部变量就会被释放,导致数组指针无效。
可以返回以下几种:
1 全局变量,或者全局变量空间内的一个地址。
2 静态局部变量,或者静态局部变量内部的一个地址。
3 从参数传入的数组/指针变量,或者在其上做的合法偏移。
4 在数组内部动态申请的空间首地址。
xoaxa
2012-10-22 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3482万
展开全部
1、在void strcat()的strcat前添加*,表示返回char 指针。
2、strcat()应该返回str1,即 return str1。str1是连接的结果,调用者有责任确保str1数组空间足够大,以便在其尾部添加str2后,不会覆盖其他数据空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
backBp
2012-10-22 · 超过18用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:52.3万
展开全部
char * strcatf(char str1[],char str2[])
加一个*号即可,返回的就是指针类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Holy_Pigh
推荐于2017-10-15 · 超过35用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:76.1万
展开全部
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;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式