我们可以定义两个指针,一个指向字符串的首位,一个指向字符串的末尾,互换内容,然后前面的指针向后加一,后面的指针向前减一,知道前面的大于或等于后面的停止。
例如:加粗的是指针指向要互换的位置
a b c d e f
f b c d e a
f e c d b a
f e d c b a
#include <stdio.h>
#include <string.h>
#include <windows.h>
void reverse(char *arr)
{
char *left = arr;
char *right = arr + strlen(arr) - 1;//strlen()是计算字符串长度的函数
while (left < right){//交换最两边的值,向内递进
char temp = *left;//创建一个临时变量存放左边的值
*left = *right;
*right = temp;
left++, right--;
}
}
int main()
{
char arr[] = "Hello world";//定义一个字符串
printf("Before:%s\n", arr);//逆置之前
reverse(arr);//将字符串逆序
printf("After :%s\n", arr);//逆置之后
system("pause");
return 0;
}