目前有兩種思路,一個是申請一片輔助空間,然后將原字符串逆向拷貝到輔助空間,然后輸出;
另一種是原地逆序,不需要額外的輔助空間,方法就是字符串首尾交換。
#include <stdio.h> #include <string.h> char* str_reverse(char* str) //字符指針 { int n = strlen(str) / 2; int i = 0; char tmp = 0; for (i = 0; i < n; i++) { tmp = str[i]; str[i] = str[strlen(str) - i - 1]; //對調 str[strlen(str) - i - 1] = tmp; } return str; } int main() { char s[] = "hello world!"; printf("str_reverse(s) = %s\n", str_reverse(s)); return 0; }
或利用指針特性,直接利用參數,代碼如下:
#include <stdio.h> #include <string.h> void str_reverse(char* str) //字符指針 { int n = strlen(str) / 2; int i = 0; char tmp = 0; for (i = 0; i < n; i++) { tmp = str[i]; str[i] = str[strlen(str) - i - 1]; //對調 str[strlen(str) - i - 1] = tmp; } return str; } int main() { char s[] = "hello world!"; str_reverse(s); printf("str_reverse(s) = %s\n",s ); return 0; }
from: https://www.cnblogs.com/lvonve/
