91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

使用c語言編寫wc命令統計字符數、單詞數、行數的案例

發布時間:2020-10-27 09:59:40 來源:億速云 閱讀:287 作者:小新 欄目:建站服務器

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

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

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

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

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

下面,貼出代碼

#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三個變量分別來統計字符數、單詞數以及行數。而word_flag是用來記錄狀態的,狀態分為兩種,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

可以看到,該程序可以正常統計字符數、單詞數以及行數。

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

向AI問一下細節

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

AI

高密市| 晋城| 霍城县| 灵石县| 阿拉善右旗| 太仓市| 大安市| 黄山市| 兴宁市| 淅川县| 贵阳市| 如皋市| 富宁县| 理塘县| 岳西县| 崇左市| 兖州市| 甘谷县| 库车县| 稻城县| 文安县| 安福县| 资源县| 尼木县| 平定县| 杭锦后旗| 徐闻县| 仁怀市| 永川市| 随州市| 昂仁县| 新和县| 凤冈县| 梓潼县| 奉化市| 遂川县| 左权县| 射洪县| 乐都县| 湘潭县| 湘潭市|