编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中
的字符串操作函数。
解法一
#include<stdio.h>
#include<assert.h>
int my_strlen(char arr[])
{
assert(arr);
int count =0;
assert(arr);
while(*arr)
{
count++;
arr++;
}
return count;
}
void reverse_string(char arr[],int len)
{
if(len == 1 || len == 0)
{
return;
}
else
{
char tmp = arr[0];
arr[0] = arr[len-1];
arr[len-1] = tmp;
reverse_string(arr+1,len-2);
}
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
reverse_string(arr,len);
printf("%s",arr);
return 0;
}
解法二
int my_strlen(arr)
{
assert(arr);
int count = 0;
while(*arr)
{
arr++;
count++;
}
return conut;
}
void reverse_string(arr)
{
int len = my_strlen;
assert(arr);
char* tmp = *arr;
*arr = *(arr+len-1);
*(arr+len-1) = '\0';
if(my_strlen(arr+1)>1)
reverse_string(arr+1);
*(arr+len-1) = tmp;
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("%s",arr);
}