数値だけでなく文字データ 'a','b','c'など を配列に格納してみようよ char型の配列宣言を行ってみます。もちろん簡単な初期化方法もつかってみます

solarplexuss 「ふふふ マックスが配列の次元を拡張している間に


'文字'を配列に格納しちゃえ


文字データていうのはシングルクォーテーション'で


半角英数字1文字を囲ったものだったよね。


'a'

's'

'1'👈1をシングルクォーテーション'で囲っています



'a'

's'

'1'



文字データを表していますね(^_-)-☆



今度は 数値データだけでなく文字データを配列にとりこんでみましょう。


その場合は


整数値データを格納するint型でなく


文字データを格納するchar型を


配列宣言にもちいます。



#include <stdio.h>


int main(void)

{

char hairetu[4];//ここでchar型の配列宣言をおこなっています


hairetu[0]='n';

hairetu[1]='e';

hairetu[2]='k';

hairetu[3]='o';


printf("%c\n",hairetu[0]);

printf("%c\n",hairetu[1]);

printf("%c\n",hairetu[2]);

printf("%c\n",hairetu[3]);


return 0;

}


プログラムの実行結果


n

e

k

o


solarplexuss


「整数値を格納するint型でなく


文字データを格納するchar型の配列宣言を行わなければ


配列変数


hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]


は文字データを格納できるようにならないわけです。


変数宣言

int a;

により作製された変数aは

'1'

'n'

などの文字データを格納することができませんでしたが


変数宣言

char a;

により作製された変数aは

'1'

'n'

などの文字データを格納することができましたね。


それと同じことですね。



char型の配列宣言


char hairetu[4];


を観察すると


生成される配列変数の数(要素数)は4となっていますね。


このとき


int hairetu[4];

を行って


配列変数を生成したときと同様に


見た目は全く同じ

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

が生成されます


int a;

により作製された変数aも


char a;

により作製された変数aも


同じ変数名aとなるのと一緒です。


そして


char型の配列宣言により作製された

このときの

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

char型の配列変数となっており

int型の配列変数が

-2147483648から214783647の整数値を

格納できるのと違い

-128から127までの数値や半角英数字1文字を

格納することができます


今まで 例えば


文字bを変数aに格納するには


変数宣言char a; のあと 文字bをシングルクォーテーション' 'で


囲って


char a='b';


と初期化していました。


同様に


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

に文字データを格納するときも


今のプログラムに記述されているように


hairetu[0]='n';

hairetu[1]='e';

hairetu[2]='k';

hairetu[3]='o';


と 取り込みたい文字n,e,k,oをシングルクォーテーション' 'で


囲みます。


ではでは\(^o^)/ちょっと遊んで


配列の要素数(生成される配列変数の数)を


かかなくても


プログラムを実行できるでしょうか?


試してみましょうか?


char hairetu[4];

char hairetu[];


と記述してプログラムを実行してみましょう。」


そのプログラムはこちらです

👇


#include <stdio.h>


int main(void)

{

char hairetu[];

hairetu[0]='n';

hairetu[1]='e';

hairetu[2]='k';

hairetu[3]='o';


printf("%c\n",hairetu[0]);

printf("%c\n",hairetu[1]);

printf("%c\n",hairetu[2]);

printf("%c\n",hairetu[3]);


return 0;

}


プログラムの実行結果


EAZY IDECの場合


ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/www/main.c」の

「5行目」で記述エラーを発見しました。

unknown type size


Visual Studioの場合


ビルド結果


エラー (アクティブ) E0070 不完全な型は使用できません

エラー C2133 'hairetu': サイズが不明です。


ははあ😊


プログラムの実行結果


unnown type size 配列の要素数が書かれていない と


エラー文がでてきました。


このプログラムの実行結果は


int型の配列宣言

int hairetu[4];


要素数をint hairetu[4];


のように記述しないで


int hairetu[];


と記述した


次のプログラムの実行結果


#include <stdio.h>


int main(void)

{

int hairetu[];

hairetu[0]=1;

hairetu[1]=2;

hairetu[2]=3;

hairetu[3]=4;


printf("%c\n",hairetu[0]);

printf("%c\n",hairetu[1]);

printf("%c\n",hairetu[2]);

printf("%c\n",hairetu[3]);


return 0;

}


プログラムの実行結果


EAZY IDECの場合


ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/www/main.c」の

「5行目」で記述エラーを発見しました。

unknown type size



Visual Studioの場合


プログラムの実行結果


エラー (アクティブ) E0070 不完全な型は使用できません

エラー C2133 'hairetu': サイズが不明です。


と同じですね。


このように


hairetu[0]='n';

hairetu[1]='e';

hairetu[2]='k';

hairetu[3]='o';




🌳1文字データを格納して配列を初期化する場合も🌳


数値データを配列に格納する場合と同様に


配列宣言

char hairetu[4];


と要素数4が[ ]内に記入されてないと


エラーがでてきます。



では もっと簡単に


char型の配列宣言の初期化をしたいときは


どのように記述したらよいでしょうか?


int型の配列宣言の初期化をした場合と同様に


簡単に


char型の配列を初期化する記述方法があります。


以下のプログラムをみていきましょう。


#include <stdio.h>


int main(void)

{

char hairetu[4]={'n','e','k','o'};


printf("%c\n",hairetu[0]);

printf("%c\n",hairetu[1]);

printf("%c\n",hairetu[2]);

printf("%c\n",hairetu[3]);


return 0;

}


プログラムの実行結果


n

e

k

o


あるいは


char hairetu[4]={'n','e','k','o'};

char hairetu[]={'n','e','k','o'};

と記述した


#include <stdio.h>


int main(void)

{

char hairetu[]={'n','e','k','o'};


printf("%c\n",hairetu[0]);

printf("%c\n",hairetu[1]);

printf("%c\n",hairetu[2]);

printf("%c\n",hairetu[3]);


return 0;

}


プログラムの実行結果


n

e

k

o


となります。



配列宣言、初期化が


char hairetu[]={'n','e','k','o'};


とまとめて記述されていて


とても簡単になっています。


char hairetu[]={'n','e','k','o'};


と要素数を記述しないで配列宣言を


行った場合は


{'n','e','k','o'}内の文字

n

e

k

o

の数

4

にあわせて

自動的に

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

4つ

生成され


hairetu[0]='n';

hairetu[1]='e';

hairetu[2]='k';

hairetu[3]='o';

配列変数に

文字データが格納されます。」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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