今回は、「文字列内の数字文字をカウントするプログラム」である。
なお、本プログラムは、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クリエイティブ
コメント