K&R 演習1-8 解答 (プログラミング言語C 第2版)

スポンサーリンク

鍛錬 71

K&R 演習1-8 解答 (プログラミング言語C 第2版)

空白, タブ, 改行を数えるプログラムを書け。

B.W.カーニハン D.M.リッチー 石田晴久 訳 『プログラミング言語C 第2版 ANSI 規格準拠』, (共立出版, 2017), pp.25.

スポンサーリンク

プログラム

以下のプログラム kr_1_8.c は、getchar() で取得したデータから、空白・タブ・改行 の数を計測し、ループから抜けた後に合計値を表示します。

#include <stdio.h>

int main(void)
{
	int c;
	int count_blank;
	int count_tab;
	int count_lf;
	
	// 初期化
	count_blank = 0;  // 空白
	count_tab = 0;    // タブ
	count_lf = 0;     // 改行
	
	// ストリームからデータを取得
	while ((c = getchar()) != EOF) {
		if (c == ' ')
			count_blank++;
		else if (c == '\t')
			count_tab++;
		else if (c == '\n')
			count_lf++;
	}
	printf("\n");
	printf("空白 = %d\n", count_blank);
	printf("タブ = %d\n", count_tab);
	printf("改行 = %d\n", count_lf);
	
	return 0;
}
スポンサーリンク

実行結果

以下は、プログラム kr_1_8.c を次の順序で実行しています。

  1. abc と入力して、エンターキーを押下
  2. a(スペース)bc と入力して、エンターキーを押下
  3. a(タブ)bc と入力して、エンターキーを押下
  4. Ctrl+D を押下して、プログラムを終了
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra kr_1_8.c -o kr_1_8
***@ubuntu:~/***/test/c$ ./kr_1_8
abc
a bc
a	bc

空白 = 1
タブ = 1
改行 = 3

 
上記に示した通り、空白・タブ・改行 の数を計測することができました。

タイトルとURLをコピーしました