C语言函数返回值输出乱码

qq_21442613 2014-11-15 04:01:00
/*testing of string*/
#include<stdio.h>
#include<string.h>

char str[]="string-testing";
char *str2="copy-string";
char *str3="a_long_long_copy_string_test";

char* str_copy_test();
char* str_catch_test();
void main()
{ char* temp;
//temp=str_copy_test();
temp=str_catch_test();
printf("%s",temp);
}
/*test of strcpy(char *dst,char const* src)*/
char* str_copy_test()
{
//strcpy(str,str2);//str must be array;
strcpy(str,str3);//size of target larger then array;
return str;
}
/*test of string catch*/
char* str_catch_test()
{ char str[100]="string-testing";
strcat(str,str2);
printf("%s",str);
return str;
}
代码如上 在函数str_catch_test内部输出str时输出正常,但是主程序中返回str并把值赋值给temp;赋值后temp的值正常,但是执行printf输出语句输出时乱码。求助!!
...全文
684 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
static char str[100]="string-testing";
xionggch 2014-11-26
  • 打赏
  • 举报
回复
char temp[100]; strcpy( temp, str_catch_test() );
sniffer12345 2014-11-25
  • 打赏
  • 举报
回复
看标题我就知道是返回临时变量。。
shadot 2014-11-25
  • 打赏
  • 举报
回复
干嘛返回局部变量,作死
过河的卒 2014-11-25
  • 打赏
  • 举报
回复
那怎么解决啊???
qq_21442613 2014-11-15
  • 打赏
  • 举报
回复
搞明白了,str为局部变量,返回后被销毁了

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧