首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言字串處理:計算單詞數量的狀態機演算法

     編輯:關於C

演算法邏輯

遍歷字串,維護布林狀態 in_word:

  • 遇到空白字符(空格、換行、Tab):in_word = false。
  • 遇到非空白且 !in_word:單詞計數 +1,in_word = true。
  • 其他情況:繼續掃描。

完整代碼

#include 
#include 

int count_words(const char *str) {
    int count = 0;
    bool in_word = false;
    while (*str) {
        if (isspace(*str)) {
            in_word = false;
        } else if (!in_word) {
            count++;
            in_word = true;
        }
        str++;
    }
    return count;
}

int main() {
    char line[1024];
    fgets(line, sizeof(line), stdin);
    printf("單詞數: %d\n", count_words(line));
    return 0;
}

關鍵點

  1. 使用 isspace() 判斷空白,涵蓋空格、\t、\n、\r 等。
  2. 狀態機模型清晰、可擴展(如支援標點分隔、引號內不分詞)。
  3. 時間 O(n),空間 O(1),單遍歷完成。

測試範例

輸入: "Hello world  this is C"
輸出: 單詞數: 5
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved