C语言字符串逆序的方法

1. 使用两个指针

 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 char *reverse_str(char *str)
 5 {
 6     if (str == NULL || *str == '\0') {
 7         return NULL;
 8     }
 9     char* start = str;
10 
11     char* end = str;
12     while (*end != '\0') end++;   
13     end--;
14  
15     while (start < end) {
16         char t = *start;
17         *start++ = *end;
18         *end-- = t ;
19     }
20 
21     return str;
22 }
23 
24 int main(int argc, char *argv[])
25 {
26     if (argc != 2) {
27         printf("need on param !\n");
28         return 0;
29     }
30     printf("%s\n", argv[1]);
31     printf("%s\n", reverse_str(argv[1]));
32     return 0;
33 }

2. 递归函数

 1 void reverse_str(char* s, int left, int right)
 2 {
 3     if (left >= right) {
 4         return;
 5     }
 6  
 7     char t = s[left];
 8     s[left] = s[right];
 9     s[right] = t;
10  
11     reverse_str(s, left + 1, right - 1);
12 }
13 
14 int main(int argc, char *argv[])
15 {
16     if (argc != 2) {
17         printf("need on param !\n");
18         return 0;
19     }
20     printf("%s\n", argv[1]);
21     reverse_str(argv[1], 0, strlen(argv[1]) - 1);
22     printf("%s\n", argv[1]);
23     return 0;
24 }