字符串翻转

第一种方法:

char* reverse(char*str)
{
int len=strlen(str),i=0;//使用库函数strlen()
char*p=str;
while(i <len/2)
{
str[i]
^= str[len-1-i]; //使用数组下标形式
str[len-1-i] ^= str[i];
str[i]
^= str[len-1-i];
i
++;
}
return p;
}

第二种方法:

char* reverse(char*str)//完全使用指针
{
char*p=str;
char*p_forward=str;
int i=0;
while(*(++str) !='\0') i++;
i
/=2;
str
--;
while(i--)
{
*p_forward ^= *str;
*str ^= *p_forward;
*p_forward ^= *str;
p_forward
++;
str
--;
}
return p;
}

第三中方法:

char* reverse(char*str)
{
char*p=str;
char*p_forward=str;
while(*(++str) !='\0');
str
--;
while(p_forward < str)//利用内存地址是连续的特性,不适用计数器变量
{
*p_forward ^= *str;
*str ^= *p_forward;
*p_forward ^= *str;

p_forward
++;
str
--;

}
return p;
}

posted on 2011-03-03 18:43  josen-jiang  阅读(144)  评论(0编辑  收藏  举报

导航