配列の中に格納されている文字列の文字数を調べるstrlen関数です 文字列が ひらがな、カタカナ、漢字の場合 

アレサ「そうですね。


ですので


strlen関数がつかわれている可能性はあるとおもいます・・・。」


ソーラー 


「問題はstrlen関数が


「ひらがな」の文字数をカウントできるかどうか


だよね。


アレサ「ソーラーさん、実際に先程のプログラムに


「ひらがな」をうちこんでいってみましょうよ。」


ソーラー「よ~し、では


次のプログラム

#pragma warning(disable: 4996)


#include <stdio.h>

#include <string.h>


int main(void)

{

char hairetu[10000];

int a;

printf("ひらがなで文字列を入力してね\n");

scanf("%s",hairetu);

a=strlen(hairetu);

printf("配列に格納された文字は「%s」です。\n",hairetu);

printf("その文字数は%dです。\n",a);

return 0;

}


をコンパイルして


入力待機中のコマンドプロンプト画面に


ねこねここねこ


と打ち込むと・・・」


アレサ「うちこむと・・・」


ソーラー「!でてきた


コンパイル結果

ねこねここねこ(と入力すると)

配列に格納された文字は「ねこねここねこ」です。

その文字数は14です。


やっぱり

文字数14か・・

ねこねここねこ と ひらがな7文字うちこんで

文字数14文字とカウントされているということは


ひらがな1文字あたり2文字とカウントされていることになる。


ということはつまり、


半角英数字1文字の画像データにつけられた数値は

1バイトのデータであらわされる。

strlen関数が1バイトのデータを1文字とカウント

するのならば


ひらがなの1文字の画像データにつけられた数値は

2バイトのデータであらわされているので


ひらがなの1文字は


strlen関数によって


半角英数字の2文字分とカウントされるというわけなんだね。」


アレサ「そのようですの。🌞」


ソーラー 「よ~し、この調子


お次はカタカナだね。」


アレサ「はい、ソーラーさん」


ソーラー「


次のプログラム

#pragma warning(disable: 4996)


#include <stdio.h>

#include <string.h>


int main(void)

{

char hairetu[10000];

int a;

printf("カタカナで文字列を入力してね\n");

scanf("%s",hairetu);

a=strlen(hairetu);

printf("配列に格納された文字は「%s」です。\n",hairetu);

printf("その文字数は%dです。\n",a);

return 0;

}

をコンパイルして


ネコネココネコ

と打ち込むと・・・」


アレサ「うちこむと・・・」


ソーラー「どうかな?・・・でてきた


コンパイル結果


配列に格納された文字は「ネコネココネコ」です。

その文字数は14です。


ひらがなと同じく


カタカナは2バイト文字なので


カタカナの画像データにつけられた数値も


2バイトに格納されているのが


このコンパイル結果からもわかるよね。




では・・・漢字はどうかな?」


アレサ 「・・どうかな?」


ソーラー「


漢字の画像データにつけられた数値は4バイト位のデータ量になるのかな?


とも思うけど・・・どうかな?


次のプログラム

#pragma warning(disable: 4996)


#include <stdio.h>

#include <string.h>


int main(void)

{

char hairetu[10000];

int a;

printf("漢字で文字列を入力してね\n");

scanf("%s",hairetu);

a=strlen(hairetu);

printf("配列に格納された文字は「%s」です。\n",hairetu);

printf("その文字数は%dです。\n",a);

return 0;

}

をコンパイルして


猫猫子猫

と打ち込むと・・・」


アレサ「・・うちこむと・・・」


ソーラー「どうかな?・・・でてきた


コンパイル結果


配列に格納された文字は「猫猫子猫」です。

その文字数は8です。


漢字の画像データを呼び出すために


漢字の画像データにつけられた数値も


ひらがなと同じく


1文字あたり2バイトのデータ量となっているのがわかります


つまり 漢字も


漢字という画像データに数値が割り振られていているだけなので


漢字は画数も多いし


ひらがなより複雑だからから


漢字の画像データを呼び出すために


漢字の画像データにつけられた数値は


1文字あたり10バイトのデータ量を


もっているということはないんだね。」


アレサ「な・る・ほ・ど ですの~


ソーラーさん」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます