配列の中に格納されている文字列データの文字数を調べる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バイトのデータ量を
もっているということはないんだね。」
アレサ「な・る・ほ・ど ですの~
ソーラーさん」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます