代碼先整體倒序字符串,再用 do-while 掃描逐詞倒序還原單詞順序。
p = str; length = 0;
do {
if (isalpha(*p)) length++; // 累計單詞長度
else {
if (length > 1) reverse_word(p, length); // 遇分隔符,倒序剛結束的單詞
length = 0;
}
} while (*p++ != '\0'); // 推進指針直到結束
reverse_word 交換單詞內部字符,使 "ABC DEF" → "CBA FED",配合前面整體倒序最終得到 "DEF ABC"。
關鍵:*p++ 先取值判斷再遞增,循環條件檢查的是**遞增前**的字符是否為 '\0'。