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

アレサ「そうですね。


ですので


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


が工夫が必要なのでしょう」


ソーラー 


「問題はstrlen関数が


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


だよね。」


アレサ「ソーラーさん、実際に先程のプログラムが実行された場合に


コマンドプロンプト画面から


キーボードで


「ひらがな」をうちこんでいって


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


試してみましょうよ。」


ソーラー「よ~し、では


次のプログラム

👇

#pragma warning(disable: 4996)


#include <stdio.h>

#include <string.h> //🌞ヘッダファイル<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バイト文字なので


ネコネココネコは


ネコネココネコ(7文字)×2



14文字であるとstrlen関数はカウントしているね



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


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


ソーラー「そういえば漢字って何バイト文字なのかわからなかったよね


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


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


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;

}


をコンパイルして


入力待機中のコマンドプロンプト画面にキーボードから


猫猫子猫

と打ち込むと・・・」


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


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


コンパイル結果


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

その文字数は8です。


猫猫子猫の4文字は


8文字とstrlen関数は認識しているね


漢字は2バイト文字ってわけだね


つまり


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


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


ひらがなと同じく


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


つまり 漢字も


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


漢字は画数も多いし


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


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


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


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


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


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


ソーラーさん」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る