ホームページ > 運用・保守 > Linuxの運用と保守 > C言語を使用してwcコマンドを作成します - 文字数、単語数、行数をカウントします

C言語を使用してwcコマンドを作成します - 文字数、単語数、行数をカウントします

齐天大圣
リリース: 2020-10-26 14:10:38
オリジナル
5132 人が閲覧しました

Linux オペレーティング システムには、文字数、単語数、行数をカウントするために使用される wc コマンドという非常に一般的に使用されるコマンドがあることはわかっています。今日は、C 言語を使用して同様の機能を持つプログラムを書いてみましょう (注: この記事を読むには、C 言語のある程度の基礎知識が必要です)。

このプログラムを作成するときは、getchar() と putchar() という 2 つの関数の使用法を習得する必要があります。

Getchar は標準入力から文字を読み取るために使用され、putchar は標準出力に文字を出力するために使用されます。標準入力の文字数をカウントするのは比較的簡単で、getchar関数で文字を読み込める限り、文字数をカウントする変数は1ずつ増えていきます。行数のカウントも簡単です。読み取った文字が改行文字であれば\n統計関数の変数が1ずつ増えます。

ここで一番難しいのは、単語数をどうやって数えるかです。ここでの私のアイデアは、状態変数 IN_WORD を設定することです。読み取られた文字が空白文字の場合 (スペース、水平タブ、改行はすべて空白です)ステータス値が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 == &#39;\n&#39;) {
            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);
}
ログイン後にコピー

上記のコードはまだ非常に単純ですが、3 つの変数 nc、nw、nl は文字数、単語数、単語数をカウントします。それぞれの行。 Word_flagはステータスを記録するために使用され、ステータスにはIN_WORDとOUT_WORDの2種類があります。

次に、上記のコードをテストしてみましょう。以下はテキストです:

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&#39;re someone who would likely make a good product manager if they ever decide to give up the joy of engineering. 
I&#39;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 単語、合計 5 行で構成されています。

# cat 1.txt | ./a.out 
542 86 5
ログイン後にコピー

プログラムが文字数、単語数、行数を正常にカウントできることがわかります。

以上がC言語を使用してwcコマンドを作成します - 文字数、単語数、行数をカウントしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート