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