//编写一个函数reverse_string(char*string),实现将参数字符串中的倒叙
// 如 char arr[]="abcdef"变为"fedcba"
//
//方法一,循环法
//#include<stdio.h>
//my_strlen(char* str)
//{
// int count = 0;
// while (*str != 0);
// {
// count++;
// str++;
// }
// return count;
//}
//void reverse_string(char* str)//void为不需要返回值void (char为字符串类型 *str是取地址)
//{
// int left = 0;
// int right = my_strlen(str) - 1;
// while (left < right)
// {
// char tmp = str[left];
// str[left] = str[right];
// str[right] = tmp;
// left++;
// right--;
// }
//}
//int main()
//{
// char arr[] = "abcdef";
// reverse_string(arr);//定义函数
// printf("%s\n", arr);//打印结果为fedcba
// return 0;
//}
//方法二:取地址法
//#include<stdio.h>
//my_strlen(char* str)
//{
// int count = 0;
// while (*str != 0);
// {
// count++;
// str++;
// }
// return count;
//}
//void reverse_string(char* str)//void为不需要返回值void (char为字符串类型 *str是取地址)
//{
// int left = 0;
// int right = my_strlen(str) - 1;
// while (left < right)
// {
// char tmp = *(str + left);
// *(str + left) = *(str + right);
// *(str + right) =tmp;
// left++;
// right--;
// }
//}
//int main()
//{
// char arr[] = "abcdef";
// reverse_string(arr);//定义函数
// printf("%s\n", arr);//打印结果为fedcba
// return 0;
//}
//方法三:递归法
#include<stdio.h>
my_strlen(char* str)
{
int count = 0;
while (*str != 0);
{
count++;
str++;
}
return count;
}
void reverse_string(char* str)//void为不需要返回值void (char为字符串类型 *str是取地址)
{
char tmp = *str;//把a从地址中拿出来
int len = my_strlen(str);//求地址并求字符串长度
*str = *(str + len - 1);//把原来的f即*(str+len-1)拿出,放在*str位置,即最前面
*(str + len - 1) = '\0';//将\0拿出
if (my_strlen(str + 1) >= 2)//判断条件
{
reverse_string(str + 1);
}
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);//定义函数
printf("%s\n", arr);//打印结果为fedcba
return 0;
}