首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言代碼解析:字符串分詞、反轉與列印完整流程

     編輯:程式設計綜合問答

這段 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;
}

輸出結果

  1. words.
  2. into
  3. broken
  4. be
  5. to
  6. line
  7. sample
  8. a
  9. is
  10. this

學習重點

  • 指針陣列操作字符串,避免大量記憶體複製。
  • 原地修改字符串(插入 \\0)分割單詞,節省空間但破壞原字符串完整性。
  • isspace() 處理所有空白字符,健壯性優於僅判斷空格。

此代碼是 C 語言指針與字符串操作的優秀教學範例,建議逐行跟蹤調試以加深理解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved