《C和指針》——6.3
題目:
編寫一個函數,把參數字符串中的字符反向排列。
函數原型:
void reverse_string(char *string);
要求:
使用指針而不是數組下標
不要使用任何C函數庫中用於操縱字符串的函數
不要聲明一個局部數組來臨時存儲參數字符串
解答代碼:
#include <stdio.h> void reverse_string(char *string) { int i, n=0; while (*(string+n) != '\0') //計算字符串中字符的個數 n++; n--; //字符個數n作為索引號時要減1,即從0到n-1 if (n > 0) //字符個數小於等於1時沒有必要反轉 { for (i=0; i<=(n/2); i++) { if (i != (n-i)) { char p; //字符內容交換 p = *(string+i); *(string+i) = *(string+n-i); *(string+n-i) = p; } } } } int main() { char source[] = "ABCDEFGH"; printf("Before reverse:\n%s\n", source); reverse_string(source); printf("After reverse:\n%s\n", source); getchar(); return 0; }
注:
1、先計算字符串中非'\0'字符的個數
2、首位字符輪流交換