2次元配列で文字列を何回も代入したい。
2次元配列が分からない。
ただの配列じゃなくて、少し難しい配列を勉強したい。
この記事を読めば、これらの悩みを解決できます。
2次元配列では、複数ある配列を2回でグループ分けが可能です。分かりやすく言えば、学校のクラス名と同じです。小学校のクラス分けは、
1-1、1-2、1-3
2-1、2-2、2-3
3-1、3-2、3-3
4-1、4-2、4-3
・
・
・
のようになりますが、この場合だと、クラスという配列を学年、組で分けています。この分け方が、まさに2次元配列だと言えます。
この考えが事を理解しておけば、2次元配列は簡単に理解できます。
分からないという人も、とりあえず使い方を見てみましょう。
2次元配列の使い方(文字列を分けて代入)
2次元配列を「文字列を分けて代入する」という目標に向かって説明していきます。最初に覚えるべきポイントをまとめます。
2次元配列に文字を代入すると、その文字には2つの数字が割り当てられます。2つの数字は
①「その文字列の中で、最初から何番目の文字か?」
②「その文字列が、最初の文字列から何番目か?」
という値になります。これにより、ある特定の文字を
配列名[②][①];
のようにして表すことができます。
また、
配列名[②];
で特定の文字列を表すことができます。
「Blog」と「Muu」という2つの文字列を具体例に説明していきます。
2次元配列の変数宣言
2次元配列を変数宣言する方法を説明します。
変数宣言にも2つの数字を使います。
①文字列の数
②文字列の中で最も多い文字数+1(+1になるのは文字列で「¥0」を使うから)
変数宣言は、
配列名[①][②];
で表します。
例えば、「Blog」と「Muu」の2つの文字列の場合、文字列の多い「Blog」の文字数に合わせて「5」という数字で変数宣言する必要があります。「a」という配列名だと
char a[2][5];
になりますね。
ですが、今回はより簡単な「変数宣言と同時に文字列を配列に代入する方法」を使います。
その方法が分からない人、もしくは何で変数宣言で5を使うか分からなかったひとは、こちらの記事を参考にしてください。
2次元配列の変数宣言と代入
2次元配列で、変数宣言と代入を同時にするときのフォーマットは
a[〇][▲]={“文字列”,”文字列”};
のようになります。
「Blog」と「Muu」の場合だと
a[2][5]={"Blog","Muu"};
になり、a[0]=Blog、a[1]=Muuと代入されることになります。
出力するときはa[0]、a[1]という文字列を指定すればそれぞれの文字列を出力することができます。
ここまでをまとめて書いてみます。
#include<stdio.h>
int main()
{
char a[2][5] = { "Blog","Muu" };
printf("%s¥n%s", a[0],a[1]);
}
このようになります。2つの文字列の間に¥nを入れて改行してみました。
出力してみます。
ちゃんと改行された状態で出力されました。
まとめ
今回学習した2次元配列をうまく使いこなせばとても便利になります。例えば、他のファイルの文章を「for文」と「scanf」で読み取って、1文ずつ分けることもできます。他にもできることはたくさんあります。今回学習した2次元配列の「グループ分け」の概念は、「構造体」に少し似ています。
構造体を学習したい人は、こちらの記事を参考にしてください。
次は、コマンドプロンプトを学習してみましょう。
コメント