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

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


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


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


半角英数字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 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';

配列変数に

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

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

作者を応援しよう!

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

応援したユーザー

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