关键字: 子函数 返回 字符串
前段时间朋友问起子函数返回字符串的问题,反应返回总出错,以下是他的源码:
#include "stdio.h"
#include "string.h"
char *Subfunction(char *input)
{
char tmp[100];
strcpy(tmp, input);
return tmp;
}
void main()
{
char *in = "http://blog.csdn.net/sharkly";
char *output;
output = Subfunction(in);
printf("%s/n", output);
}
以上代码之所以出错是因为子函数中 tmp作为局部变量,在执行完子函数后已经消失,
也就是说 output 指向了一个空的或不明地址,当然会出错。
改正如下:
#include "stdio.h"
#include "string.h"
char *Subfunction(char *input)
{
//char tmp[100]; //错误
char *tmp= new char[100]; //正确
strcpy(tmp, input);
return tmp;
}
void main()
{
char *in = "http://blog.csdn.net/sharkly";
char *output;
output = Subfunction(in);
printf("%s/n", output);
delete(output); //一定要有
}