配列の中に格納されている文字の文字数を調べるstrlen関数です 文字列が絵文字🐈🐘🍅の場合

アレサ 「ソーラーさん、ここまできたなら


絵文字1文字はstrlen関数によって


何文字とカウントされるのでしょうか


カウントされる文字数から


絵文字1文字🐶につけられた数値のデータは何バイトの


データ量をもっているか


わかるとおもいますの」


ソーラー「もっちろん、


絵文字か・・・🐾🌳🍎🍊🍉🍈 なんでもござれ。


では


次のプログラム


#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;

}


をコンパイルして


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


🐈🐘🍓


と打ち込むと・・・」


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


ソーラー「うちこむと・・・て、あれ? あれ?


(EAZY IDECの場合)

(VisualStudioの場合)


コンパイル結果は

‥‥‥ (🐈🐘🍓と入力していますが‥‥‥と表示されます)

配列に格納された文字は??????です。

その文字数は6です。


🐈🐘🍓 をうちこんでるのに


‥‥‥ と変換してコマンドプロンプト画面にうちこまれてしまう。


もう一度


🐈🐘🍓と うちこんでも


‥‥‥か


🐈🐘🍓は


‥‥‥としかうちこめないや


それに


配列に格納された文字は??????です。


??????って表示されちゃってるよ


コンピュータもこんがらがっちゃってるよ。」


アレサ 「絵文字は文字化けしてしまいますの。


ですが その文字数は6です。となっていることから


🐈🐘🍓は半角英数字6文字分とカウントされています。


つまり


絵文字1文字あたり

半角英数字2文字分にカウントされています。


半角英数字1文字の画像データに割り振られた数値データは


1バイトのデータ量をもっているので


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


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


ひらがなと同じく2バイトのデータ量をもっていることになります。」

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

作者を応援しよう!

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

応援したユーザー

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