這段 C 代碼演示了經典的字符串處理流程:將一行文本按空白字符分割為單詞,反轉單詞順序,最後按編號列印。適合初學者理解指針陣列、動態記憶體與字符串操作。
mark_words(char *line, char *words[])line 中的單詞按空白字符(空格、Tab、換行等)分割,將每個單詞的起始地址存入 words 陣列,用 \\0 替換分隔符,返回單詞數量。關鍵邏輯:inbetween 標記是否處於分隔符區域,遇到非空白字符且前一狀態為分隔符時,記錄新單詞起始位址。reverse_words(char *words[], char *rwords[], int count)words 陣列中的指針按逆序複製到 rwords,實現單詞順序反轉。print_words(char *words[])%2d. %s 格式列印每個單詞及其序號。int main() {
char *line = malloc(LINELENGTH);
strcpy(line, "this is a sample line to be broken into words.");
char *words[51], *rwords[51];
int count = mark_words(line, words);
reverse_words(words, rwords, count);
print_words(rwords);
return 0;
}
\\0)分割單詞,節省空間但破壞原字符串完整性。isspace() 處理所有空白字符,健壯性優於僅判斷空格。此代碼是 C 語言指針與字符串操作的優秀教學範例,建議逐行跟蹤調試以加深理解。