C言語のきほん「文字列の基本(3)」

スポンサーリンク
プログラミング C言語

今回は、「文字列内の数字文字をカウントするプログラム」である。

なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.89.1)を使用して作成し、gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0 でコンパイルしている。

文字列内の数字文字をカウントするプログラム

// 文字列内の数字文字をカウントするプログラム

#include <stdio.h>

//文字列s内に含まれる数字文字の出現回数を配列cntに格納
void str_dcount(const char s[], int cnt[])
{
    int i = 0;
    while (s[i]) {
        if (s[i] >= '0' && s[i] <= '9')
            cnt[s[i] - '0']++;
        i++;
    }
}

int main(void)
{
    int i;
    int dcnt[10] = {0};
    char str[128];

    printf("文字列を入力してください:");
    scanf("%s",str);

    str_dcount(str,dcnt);

    puts("数字文字の出現回数");
    for (i = 0; i < 10; i++)
        printf("'%d': %d\n",i,dcnt[i]);
    
    return 0;
}

実行結果

文字列を入力してください:3.141592653589793238462643
数字文字の出現回数
'0': 0
'1': 2
'2': 3
'3': 5
'4': 3
'5': 3
'6': 3
'7': 1
'8': 2
'9': 3

関数str_dcountは、受け取った文字列s内に含まれる各数字文字列の個数を、配列cntに格納する。

文字は、その文字に与えられた、非負の整数値の文字コードで表される。

そして、C言語のプログラムは実行される環境では、
数字文字’0’、’1’、・・・’9’の値は一つずつ増えていく。

どの数字文字から’0’を引いても、ここで必要とする添字の値となる。

参考)新・明解C言語 入門編 第2版 柴田 望洋 (著)SBクリエイティブ

コメント

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