将参数字符串中的字符反向排列,不是逆序打印。(不能使用C函数库中的字符串操作函数。)
1.循环
1. 给两个指针,left放在字符串左侧,right放在最后一个有效字符位置 2. 交换两个指针位置上的字符 3. left指针往后走,right指针往前走,只要两个指针没有相遇,继续2,两个指针相遇后,逆置结束。
代码实现:
void reverse_string(char* arr)
{
char *left = arr;
char *right = arr+strlen(arr)-1;
while(left<right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
2.递归方式:
1. 交换a和g
2. 以递归的方式逆置源字符串的剩余部分,剩余部分可以看成一个有效的字符串,再以类似的方式逆置
代码实现:
void reverse_string(char* arr)
{
int len = strlen(arr);
char tmp = *arr;
*arr = *(arr+len-1);
*(arr+len-1) = '\0';
if(strlen(arr+1)>=2)
reverse_string(arr+1);
*(arr+len-1) = tmp;
}