方法一:递归
#include<stdio.h>
#include<string.h>
void reverse_string(char* arr)
{
char temp = *arr;//首元素存放好
int len = strlen(arr);
*arr = *(arr + len - 1);//最后一个元素到首位
*(arr + len - 1) = '\0';//最后一个元素等于\0,给定下次遍历的右范围
if (strlen(arr + 1) >= 2)
{
reverse_string(arr + 1);//给定下次遍历的左范围
}
*(arr + len - 1) = temp;//把当前的最后元素,也就是\0,替换成首元素
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
方法二
#include<stdio.h>
int main()
{
char arr[] = "fwiuzv";
int sz = sizeof(arr) / sizeof(arr[0]);
int b[10000];
for (int i = 0; i < sz; i++)
{
b[i] = arr[sz - 1 - i];
}
for (int i = 0; i < sz; i++)
{
printf("%c",b[i]);
}
printf("\n");
char c[] = "nowcoder";
int size = sizeof(c) / sizeof(c[0]);
int ret;
for (int i = 0; i < (size/2); i++)
{
ret= c[i];
c[i] = c[size - 1 - i];
c[size - 1 - i] = ret;
}
for (int i = 0; i < size; i++)
{
printf("%c", c[i]);
}
return 0;
}