《Pointers on C》这本书上的一个练习题。
编写函数reverse_string,它的原型如下:
void reverse_string(char *string);
函数把参数字符串中的字符反向排列。请使用指针而不是数组下标,不要使用任何C函数库中用于操纵字符串的函数。提示:不需要声明一个局部数组来临时存储参数字符串。
void reverse_string(char *string)
{
char *last_char;
for(last_char = string; *last_char != '/0'; last_char++); //把last_char指向最后一个字符
last_char--;
/* 当string 和last_char相遇或擦肩而过的时候停止交换 */
while(string < last_char)
{
//把string 和last_char 的内容进行交换
*string = *string ^ *last_char;
*last_char = *string ^ *last_char;
*string = *string++ ^ *last_char--;
}
}
void main()
{
char str[] = "123456";
reverse_string(str);
printf("%s ", str);
getchar();
return ;
}
结果: 654321