溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用c語言編寫wc命令統(tǒng)計字符數(shù)、單詞數(shù)、行數(shù)的案例

發(fā)布時間:2020-10-27 09:59:40 來源:億速云 閱讀:279 作者:小新 欄目:建站服務(wù)器

這篇文章將為大家詳細講解有關(guān)使用c語言編寫wc命令統(tǒng)計字符數(shù)、單詞數(shù)、行數(shù)的案例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

我們知道linux操作系統(tǒng)上有一個非常常用的命令,用來統(tǒng)計字符數(shù)、單詞數(shù)以及行數(shù)的wc命令。使用c語言來編寫一個類似功能的程序

編寫該程序時,需要掌握兩個函數(shù)的用法,getchar()以及putchar()。

getchar用來從標準輸入中讀取一個字符,而putchar則是向標準輸出打印一個字符。統(tǒng)計標準輸入字符數(shù)比較簡單,只要getchar函數(shù)還能讀入字符,統(tǒng)計字符數(shù)的變量就自增加1。統(tǒng)計行數(shù)也簡單,只要讀入的字符為換行符\n則將統(tǒng)計函數(shù)的變量自增加1。

這里的主要難點在于如何統(tǒng)計單詞的數(shù)量,這里我的思路是,設(shè)定一個狀態(tài)變量IN_WORD,當讀入的字符是空白字符時(空格、水平制表符、換行符都為空白字符),IN_WORD值為0,統(tǒng)計的單詞數(shù)目不變,當?shù)鹊阶x入一個非空白字符時,統(tǒng)計單詞的數(shù)目加1,IN_WORD值為1,當該狀態(tài)值為1時,即使讀入了非空白字符,單詞統(tǒng)計的數(shù)目也不變動。

下面,貼出代碼

#include <stdio.h>
#include <ctype.h>

#define IN_WORD 1
#define OUT_WORD 0

void main (void)
{
    int nc,nw,nl;
    char c,word_flag;
    
    nc = nw = nl = 0;
    word_flag = OUT_WORD;
    
    while ((c = getchar()) != EOF) {
        nc ++;
        
        if (c == '\n') {
            nl ++;
        }
        
        if (!isspace(c) && word_flag == OUT_WORD) {
            nw ++;
            word_flag = IN_WORD;
        } else if (isspace(c) && word_flag == IN_WORD) {
            word_flag = OUT_WORD;
        } 
    }
    
    printf("%d\t%d\t%d\n", nc, nw, nl);
}

上述代碼還是非常的簡單的,nc,nw,nl三個變量分別來統(tǒng)計字符數(shù)、單詞數(shù)以及行數(shù)。而word_flag是用來記錄狀態(tài)的,狀態(tài)分為兩種,IN_WORD以及OUT_WORD。

接下來,我們來測試下上述代碼。下面是一段文本:

Product-minded engineers are developers with lots of interest in the product itself. 
They want to understand why decisions are made, how people use the product, and love to be involved in making product decisions.
They're someone who would likely make a good product manager if they ever decide to give up the joy of engineering. 
I've worked with many great product-minded engineers and consider myself to be this kind of developer. 
At companies building world-class products, product-minded engineers take teams to a new level of impact.

上述文本共有86個單詞,共五行。

# cat 1.txt | ./a.out 
542 86 5

可以看到,該程序可以正常統(tǒng)計字符數(shù)、單詞數(shù)以及行數(shù)。

關(guān)于使用c語言編寫wc命令統(tǒng)計字符數(shù)、單詞數(shù)、行數(shù)的案例就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI