配列の中に格納されている文字の文字数を調べるstrlen関数です 文字が絵文字🐈🐘🍅の場合
アレサ 「ソーラーさん、ここまできたなら
絵文字1文字はstrlen関数によって
何文字とカウントされるのでしょうか
カウントされる文字数から
絵文字1文字🐶は何バイト文字なのか?
つまり
絵文字1文字🐶につけられた数値データは何バイトの
データ量をもっているか
わかるとおもいますの」
ソーラー「もっちろん、
絵文字か・・・🐾🌳🍎🍊🍉🍈 なんでもござれ。
では
次のプログラム
#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;
}
をコンパイルして
入力待機中のコマンドプロンプト画面で
🐈🐘🍓
と打ち込むと・・・」
アレサ「うちこむと・・・」
ソーラー「うちこむと・・・て、あれ? あれ?
(EAZY IDECの場合)
(VisualStudioの場合)
コンパイル結果は
‥‥‥ (🐈🐘🍓と入力していますが‥‥‥と表示されます)
配列に格納された文字は??????です。
その文字数は6です。
🐈🐘🍓 をうちこんでるのに
‥‥‥ と変換してコマンドプロンプト画面にうちこまれてしまう。
もう一度
🐈🐘🍓と うちこんでも
‥‥‥か
🐈🐘🍓は
‥‥‥としかうちこめないや
それに
配列に格納された文字は??????です。
??????って表示されちゃってるよ
コンピュータもこんがらがっちゃってるよ。」
アレサ 「絵文字は文字化けしてしまいますの。
ですが その文字数は6です。となっていることから
🐈🐘🍓は半角英数字6文字分とカウントされています。
つまり
絵文字1文字あたり
半角英数字2文字分にカウントされています。
半角英数字1文字の画像データに割り振られた数値データは
1バイトのデータ量をもっているので
絵文字の画像データを呼び出すために
絵文字の画像データにつけられた数値データは
ひらがなと同じく2バイトのデータ量をもっていることになります。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます