おまけのコーナー 配列の中に格納されている🍋文字列データ🍋の文字数を数え上げるstrlen関数をつかって 配列の中に格納されている🍎数値データ🍎の数を数え上げてみよう EAZY IDECの場合

マックス

「ところでint型の17次元配列まで完成させたが


一体


このint型の17次元配列にはどれくらいの数の数値データが格納されてるのか?


strlen関数で数え上げきれるかな・・」


てんC「そうですね。格納されている文字列データの文字数でなく


数値データの数ですか


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


int型の配列に格納された数値データの数を数え上げるのに


はたして適用可能でしょうか?」


マックス「にゃはは~おもしろい、


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


int型の配列に格納された数値データの数を数え上げる


int型の配列に格納された数値データの数を数えあげられるか?


適用範囲をしらべてみよ~じゃないか。」


てんC「はい(^^)、わかりました。」


マックス「うぉぉ、では、手始めに


char型の1次元配列に数値データ1を1つだけ格納して


strlen関数をつかって


1次元配列に格納された数値データの数を数え上げる!!!


ちょこ、ちょこ」


ちょこ、ちょことプログラムを書き上げる。マックス。


#include <stdio.h>

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

int main(void)

{

char hairetu[]={1};

int a;

a=strlen(hairetu);

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

return 0;

}


EAZY IDECの場合


コンパイル結果

hairetuに格納されている文字数は4です


マックス 「配列に格納されている数値は1がひとつだけだが


strlen関数は格納されている数値の数は4とカウントしてきたか・・・」


てんC「???そうですね・・・うまく機能していないようですね。」


マックス「よっしゃ~~


もうすこし数値データをふやしchar型の配列に数値データ1を2つ代入して


strlen関数で代入された数値データの数を数え上げてみるぅぜぇぇぇ。


ちょこ、ちょこ」


ちょこ、ちょことプログラムを書き上げる。マックス。


#include <stdio.h>

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

int main(void)

{

char hairetu[]={1,1};

int a;

a=strlen(hairetu);

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

return 0;

}

コンパイル結果

hairetuに格納されている文字数は5です


マックス「これは・・・もしや・・」


てんC「??良いデータがでてきましたね。」


マックス「おおっもしや、もしや


今度は


さらに数値データをふやしchar型の配列に数値データ1を3つ代入し


strlen関数で代入された数値データの数を数え上げてみるん。


しゃか、しゃか」


#include <stdio.h>

int main(void)

{

char hairetu[]={1,1,1};

int a;

a=strlen(hairetu);

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

return 0;

}


EAZY IDECの場合

コンパイル結果

hairetuに格納されている文字数は6です


マックス「なるほど


strlen関数は実際に配列内に格納されている数値データの数プラス3を


表示してきているわけか・・・」


てんC「よい結果がえられましたね。


ところでマックスさん。


このような変数の型char型の配列は


普通は格納しているものが


'a'や'b'などの文字データ(1バイトのデータ量)なのです


そして


char型の配列宣言


char hairetu[]によって生成される


char型の配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

でも確かに


(1バイトのデータをもつ)数値-127から数値128までは格納できますが


その範囲外の整数値

(10000はint型に格納されるようになりますので4バイトのデータ量をもちます)


例えば

100000


1バイトのデータ格納容量をもつchar型の配列変数

hairetu[0]


に格納することはできません。


もともとchar型の配列に数値データを格納するには無理があると思われます


そのような事態をさけるため


最初から


このプログラムの


配列の変数の型はcharでなく


変数の型intにすべきだと思われますが・・・」


マックス「なにぃぃ またまたてんCにつっこみをいれられるとはぁぁ


はぁはぁ💖」


てんCの両手を握るマックス。


マックス 「おめでとう!」


てんC「は???い、いえ、どういたしまして」


マックス「というわけで


配列の変数の型charをintにかきかえてプログラムをコンパイルしてみると


配列に格納されている数値が1だけの場合


#include <stdio.h>

int main(void)

{

int hairetu[]={1};//変数の型charからintに変更しました

int a;

a=strlen(hairetu);

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

return 0;

}


EAZY IDECの場合

コンパイル結果

hairetuに格納されている文字数は1です


配列に格納されている数値が1、1と2つの場合


#include <stdio.h>

int main(void)

{

int hairetu[]={1,1};

int a;

a=strlen(hairetu);

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

return 0;

}


EAZY IDECの場合

コンパイル結果

hairetuに格納されている文字数は2です


配列に格納されている数値が1,1,1と3つの場合


#include <stdio.h>

int main(void)

{

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

int a;

a=strlen(hairetu);

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

return 0;

}


EAZY IDECの場合

コンパイル結果

hairetuに格納されている文字数は3です


マックス「


やったぜ!!てんC


きれいな結果がでてるじゃないか


お~いおいおい💦(🌊だ)(👈うれしさのあまり涙を誤変換しました)


お兄ちゃんはうれしいぞぉ


変数の型charをintにかきかえるだけで


配列内に格納された文字列の文字数を数え上げる


strlen関数を使って


ここまで


正確に配列内に格納された数値データの数を数え上げることができるとは・・・


まったくおもわなかったぃ なははは」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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