-'0'の意味について
C言語を学んであまり経っていない初心者です。
勉強していてどうにもわからないので質問させていただきたいと思います。
以下のプログラム、文字列stに含まれている数字文字'0'~'9'の個数を、cnt[0]cnt~[9]に格納して、数字文字'9'が文字列stにいくつ含まれているかを確認するプログラムです。
疑問なのは関数cntdigit内のwhile文内の
cnt[*st - '0']++;というところです。
- '0'は何の役割を果たしているのでしょうか。
ためしに- '0'を抜いて実行したら数字文字がstに入力されるとエラーが発生します。
#include<stdio.h>
void cntdigit(char *st, int *cnt)
{
int i;
for (i = 0; i < 10; i++)
*(cnt + i ) = 0;
while (*st) {
if (*st >= '0' && *st <= '9')
cnt[*st - '0']++; ←ここ
st++;
}
}
int main(void)
{
int cnt[9];
char st[100];
printf("文字列を入力してください : ");
scanf("%s" , st);
cntdigit(st , cnt);
puts("格納しました。 ");
printf("9の数は%dです。", cnt[9] );
return (0) ;
}
お礼
ご回答いただきありがとうございました。