一个颠倒字符串的程序 运行总出错
c语言吧
全部回复
仅看楼主
level 8
#include<stdio.h>
#include<string.h>
char* opposite(char *s);
int main(void)
{
char s[81];
char *p;
do
{
puts("input string");
gets(s);
p = opposite(s);
puts(p);
puts("put any char except q to go on");
gets(s);
}
while(*s != 'q');
return 0;
}
char* opposite(char *s)
{
char p[81];
int i;
int j = 0;
i = strlen(s);
i -= 1;
for( ;i > 0; i--,j++)
{
p[j] = s[i];
}
return p;
}
2017年04月20日 13点04分 1
level 11
不用这么麻烦吧?
2017年04月20日 14点04分 2
我想知道哪错了
2017年04月20日 14点04分
level 11
opposite里的p是局部变量,函数结束就销毁了
2017年04月20日 14点04分 3
那我把p传地址给s 再返回s的地址 还是不对
2017年04月20日 14点04分
@永远的一点一滴 这没区别啊,p最为局部变量被销毁,s就是一空指针
2017年04月20日 14点04分
@azurity 这样啊 那只能对原数组的元素改变顺序 再返回s的地址?
2017年04月20日 14点04分
@永远的一点一滴 可以的。也可以定义一个可用的数组传进去,或者定义一个全局数组
2017年04月20日 14点04分
level 8
我赶来膜拜C++[滑稽](逃)
2017年04月20日 14点04分 4
1