(查错)用指针使字符串翻转

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:34:17
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
char *str="hello,world!";
int len=strlen(str);
char *dest=(char *)malloc(len+1);
char *s=&str[len-1];
//char *d=dest;
while(len--!=0){
*dest++=*s--; //*d++=*s--;
}
*dest=0; // *d=0;
printf("The reverse string is:%s\n",dest);
free(dest);
return 0;
}
上面这代码我是想用指针使“hello,world!”字符串翻转,以上代码会发生错误,但另声明一个指针char *d=dest;再把屏蔽的两句语句代替原代码语句,运行结果就是OK的。为什么不能用dest指针来操作?却得另外声明一个指针char *d=dest,让d自增(*d++=*s--;)就行?谢谢!

当然错了,你的dest最后都跑到字符串结尾了.

char* RevStr(char * StrSrc)
{
int len=strlen(StrSrc);
int length=len-1;
char TempStr;
for (int i=0;i<len/2;i++)
{
TempStr=StrSrc[i];
StrSrc[i]=StrSrc[length];
StrSrc[length--]=TempStr;
}
return StrSrc;
}

显然了,经过这么一鼓捣dest早就不指向字符串的第一个位置了,最后dest指向字符串的最后一个位置。所以什么都不会输出,而且释放空间时还会出错