我问题如下:
输入字符后,运行结果为乱码
#include
char* copy(char* p)
{
int j=0;
char a[100];
for (int i=0;i<13;i++)
{
if(p[i]!=' ')
a[j++]=p[i];
else
continue;
}
return a;
}
int main()
{
using namespace std;
char a[13];
char t[100];
cin>>a;
cout<<copy(a);
return 0;
}
不要返回局部指针,数组a是局部的
数组名不是指针,它仅仅是个 地址常量
数组名可以做为一个指针返回,这个没问题,但问题是:
你得把a
定义成静态变量或者全局变量,才能直接在函数里return
它,局部变量在函数返回时就被销毁了,肯定是乱码,甚至程序会崩溃掉。
char* copy(char* p)
{
static char a[100]; // 静态变量
...
return a;
}
或者
char a[100]; // 全局变量
char* copy(char* p)
{
...
return a;
}
可以返回数组,不过你要在堆上分配数组。同时找时机释放。