天国にいけるC言語入門 ヘキサ構造体 ver5.2130
おまけのコーナー 配列の中に格納されている🍋文字列データ🍋の文字数を数え上げるstrlen関数をつかって 配列の中に格納されている🍎数値データ🍎の数を数え上げてみよう EAZY IDECの場合
おまけのコーナー 配列の中に格納されている🍋文字列データ🍋の文字数を数え上げる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関数を使って
ここまで
正確に配列内に格納された数値データの数を数え上げることができるとは・・・
まったくおもわなかったぃ なははは」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます