C语言实现字符串逆序
一、迭代的方式实现
贴上代码:迭代的方式实现
'//字符串逆序:不可用字符串操作函数'
#include <stdio.h>
void swap(char* ch1, char* ch2) '//交换两个字符串'
{
char tmp = *ch1;
*ch1 = *ch2;
*ch2 = tmp;
}
int my_strlen(char* str) '//实现计算字符串字节数'
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse_string(char* str) '//实现字符串逆序'
{
int left = 0;
int right = my_strlen(str) - 1;
while (left < right)
{
swap(str+left, str+right);
left++;
right--;
}
}
int main() {
char arr[] = "abcdefgh";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
swap()函数还不如不定义,,这样好写一点。
二、递归的方式实现
贴上代码:递归,思路挺难的,重点在于熟悉递归
void reverse_string(char* str)
{
if (*str != '\0')
{
char tmp = *str;
int length = strlen(str);
*str = *(str+ length - 1);
*(str + length - 1) = '\0';
reverse_string(str + 1);
*(str + length - 1) = tmp;
}
}
int main()
{
char arr[] = "abcdefgh";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
|