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

C 語言實現文本統計:行數、單詞數與字符數計算器

     編輯:關於C語言

問題描述

從標準輸入讀取文本(以 EOF 結束),統計行數(\n)、單詞數(由空白字符分隔)、字符數(含換行、空格等所有字符)。

算法邏輯

  • 狀態機:IN(在單詞內)、OUT(在單詞外)。
  • 讀取字符 c:
  • 字符數 nc++。
  • 若 c == '\n' 則行數 nl++。
  • 若 c 為空白(空格、制表、換行):狀態置 OUT。
  • 否則若當前狀態 OUT:進入單詞,狀態置 IN,單詞數 nw++。

完整代碼

#include <stdio.h>

#define IN  1
#define OUT 0

int main() {
    int c, nl = 0, nw = 0, nc = 0, state = OUT;
    while ((c = getchar()) != EOF) {
        nc++;
        if (c == '\n') nl++;
        if (c == ' ' || c == '\t' || c == '\n')
            state = OUT;
        else if (state == OUT) {
            state = IN;
            nw++;
        }
    }
    printf("%d %d %d\n", nl, nw, nc);
    return 0;
}

測試示例

輸入:

Hello world
This is a test

輸出:

2 6 27

(2 行、6 個單詞、27 字符含換行符)

擴展建議

  • 支持 UTF-8 多字節字符計數(需解碼)。
  • 區分代碼行/註釋行/空行(針對源文件統計)。
  • 讀取文件而非標準輸入(fopen/fgetc)。

總結

利用簡單有限狀態機(兩態)即可在單次掃描中完成行/詞/字三項統計,時間 O(N)、空間 O(1),是經典的 K&R C 語言教程習題實現。

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