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 }
原文:https://www.cnblogs.com/wangshaodong/p/13512523.html