不分配额外空间,如何实现字符串逆序
逆序输出采用异或方式,但是在处理字符串流时,报错,求指导char* reverse(char *s)
{
char *p,*r;
p=r=s;
while('\0' != *p)
{
printf("%c\n",*p);
p++;
}
p--;
if(r < p)
{
*r = *r ^ *p;
*p = *r ^ *p;
*r = *r ^ *p;
r++;
p--;
}
return s;
}
char* reverse(char *s);
int main()
{
char *x ;
char *y ;
char *a= "1234";
x = a;
reverse(x);
printf("x:%s",*x);
getchar();
return 0;
} 你的功能我没测试,但是发现一个问题:
char *a = "1234";
这里a指向一个常量区,你非要去改,那就尴尬了。
建议:char a[] = "1234";// 你这样在栈上分配,多好,就没那么多限制了
还有几个小问题稍微改了下:
char* reverse(char *s)
{
char *p,*r;
p=r=s;
while('\0' != *p)
{
printf("%c\n",*p);
p++;
}
p--;
// if(r < p)
while(r < p)
{
*r = *r ^ *p;
*p = *r ^ *p;
*r = *r ^ *p;
r++;
p--;
}
return s;
}
int main()
{
char *x ;
char *y ;
// char *a = "1234";
char a[]= "1234";
x = a;
reverse(x);
// printf("x:%s",*x);
printf("x:%s",x);
getchar();
return 0;
}
PS:如果程序还有问题再讨论 n0noper 发表于 2016-11-15 00:13
你的功能我没测试,但是发现一个问题:
char *a = "1234";
非常感谢!我再仔细研读一下!
页:
[1]