|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
逆序输出采用异或方式,但是在处理字符串流时,报错,求指导
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:如果程序还有问题再讨论
|
|