1、非递归:
#include<stdio.h>
#include<string.h>
void reverse_string(char arr[])
{
int left = 0;
int right = strlen(arr)-1;
while (left < right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
2、递归:
#include<stdio.h>
#include<string.h>
void reverse_string(char arr[])
{
char tmp = arr[0];
int len=strlen(arr);
arr[0] = arr[len - 1];
arr[len - 1] = '\0';//因为strlen是算出'\0'前的长度
//中间字符串的逆序
if(strlen(arr+1)>1)
reverse_string(arr + 1);
arr[len - 1] = tmp;
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}