1次元配列でなく2次元配列のなかに格納されている数値データの数を配列のなかに格納されている文字列データの文字数を数え上げるstrlen関数を使って数え上げてみます

マックス 「Ⅰ次元配列の中に格納されている数値データの数は


strlen関数を使って


なんとか無事に数え上げることができた。


ただし


統合開発環境EAZY IDECの場合だけだったがな


Visual Studioでは数え上げることができなかったい






次は


strlen関数を使って


2次元配列の中に格納されている数値データの数を数え上げてみるか~


おもしろそうじゃないか😊」


(今更ですが😊


このお話では 配列内に格納されている数値データの数を数え上げています。


文字列データの数を数え上げているのではありませんので


配列内にはヌル文字\0は格納されていません。)


てんC「はいっ 


次は


2次元配列に格納された☆数値データの数☆を


     "配列に格納された☆文字列データの文字数☆を数え上げる"


strlen関数を使って数えあげてみます。


例として


2次元配列宣言


int hairetu[2][3]={{1,2,3},{4,5,6}};


によって作成された配列のなかに格納されている☆数値データの数☆を


”配列に格納された☆文字列データの文字数☆を数え上げる”


strlen関数を使って数え上げてみます。


この2次元配列の中に格納されている数値データの数は


1,2,3,4,5,6の6つですね。


先程のエピソードでもみてきましたが


通常の場合 一般に


配列に文字列データではなく数値データを格納するときは


配列宣言、初期化は


変数の型

char型をつかって

char型の配列宣言


char hairetu[2][3]={{1,2,3},{4,5,6}};


が行われるのではなく


int型を使って

int型の配列宣言


int hairetu[2][3]={{1,2,3},{4,5,6}};


が行われます


なぜなら


char hairetu[2][3]={{1,2,3},{4,5,6}};


により生成される


char型の配列変数


hairetu[0][0]

hairetu[0][1]

hairetu[0][2]

hairetu[1][0]

hairetu[1][1]

hairetu[1][2]


は-128から127の範囲外の


数値をデータを格納できないからですね。


それでは


2次元配列宣言


int hairetu[2][3]={{1,2,3},{4,5,6}};


によって作成された配列のなかに


格納されている数値データの数をstrlen関数を使って数え上げてみます。


カタカタカタ


#include <stdio.h>

#include <string.h>//🌞ヘッダファイル <string.h>をインクルードしてください


int main(void)

{

int hairetu[2][3]={{1,2,3},{4,5,6}};


int a;

a=strlen(hairetu);

printf("hairetuに格納されている数値データの数は%dです \n",a);

return 0;

}



Visual Studioの場合


ビルド実行結果


エラー (アクティブ) E0167 型 "int (*)[3]" の引数は型 "const char *" のパラメーターと互換性がありません

エラー C2664 'size_t strlen(const char *)': 引数 1 を 'int [2][3]' から 'const char *' へ変換できません。




EAZY IDECの場合


コンパイル結果


hairetuに格納されている数値データの数は1です


マックス「


Visual Studioの場合はやはりプログラムを実行できないか・・


EAZY IDECの場合は・・・


1か....ああっOH!!ノウ💦」


てんC 「EAZY IDECの場合でも


strlen関数は


2次元配列内の数値データの数を正確にかぞえあげることができていませんね(^^)。


次は3次元配列宣言

int hairetu[2][3][4]=

{{{2,3,4,5},{8,8,8,7},{3,8,2,8}},{{7,1,0,8},{3,2,4,5},{6,3,0,8}}};


によって作成される配列に格納されている数値データの数を数え上げてみます。」


#include <stdio.h>

#include <string.h>//🌞ヘッダファイル <string.h>をインクルードしてください

int main(void)

{

int hairetu[2][3][4]=

{{{2,3,4,5},{8,8,8,7},{3,8,2,8}},{{7,1,0,8},{3,2,4,5},{6,3,0,8}}};

int a;

a=strlen(hairetu);

printf("hairetuに格納されている数値の数は%dです \n",a);

return 0;

}


Visual Studioの場合

エラー (アクティブ) E0167 型 "int (*)[3][4]" の引数は型 "const char *" のパラメーターと互換性がありません

エラー C2664 'size_t strlen(const char *)': 引数 1 を 'int [2][3][4]' から 'const char *' へ変換できません。




EAZY IDECの場合

コンパイル結果


hairetuに格納されている数値の数は1です


マックス 「おおぅぅおにゃにゃにゃんと・・・


にゃんこショックです」


てんC 「ふ・・ふふ・・・マックスさん、


Visual Studioの場合はビルドエラーが表示されています


今度も


EAZY IDECは


strlen関数は数値の数を正確にかぞえあげることができていませんね。」



マックス 「いや~ん・・・まあ、


さすがに2次元、3次元配列の中に格納されている数値データの数を


もともと


”char型の配列に格納された文字列データの文字数を数え上げる”


strlen関数を使って数えあげることはちょっと無理だったかにゃ・・」


まあ さすがに こんな感じに格納されている


{{{2,3,4,5},{8,8,8,7},{3,8,2,8}},{{7,1,0,8},{3,2,4,5},{6,3,0,8}}}


配列の中の数値データの数をかぞえあげられないのは


無理もない・・・か」





#include <stdio.h>

int main(void)

{

int hairetu[2][2][1]={{{1},{1}},{{1},{1}}};

int a;

a=strlen(hairetu);

printf("hairetuに格納されている数値の数は%dです \n",a);

return 0;

}


マックス「↑もstrlen関数が配列の中に格納されている数値データの数を数え上げるのは無理そう・・・


見た感じからむっり」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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