字符串翻转
第一种方法:
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) 编辑 收藏 举报