スポンサーリンク

char二次元文字配列

C言語

char 文字列型の二次元配列について

先日説明させて頂いた二次元配列を用いて、【 char 】文字列型の二次元配列に付いて説明させていただきたいと思います。

二次元サンプル(整数型(int)、実数型(double)、文字列型(char)のサンプル

要素数を二つ並べると二次元
int mydt[2][2];

double mydt[3][5];

char [4][6];

三次元配列サンプル

要素数を三つ並べると三次元
int mydt[1][1][3];

double mydt[2][2][4];

char [3][3][2];

要素:mydt[要素] 任意に用意した配列の数。

下図の赤線部分が要素です。

二次元配列の場合

【 char moji[2][3]; 】とした場合

以下のように三行二組メモリ上に確保されます。

moji[0][0]
moji[0][1]
moji[0][2]
moji[1][0]
moji[1][1]
moji[1][2]

二次元文字配列に初期値を設定する場合

int moji[2][3] = {“AB”,”CD”};

二次元文字配列(多次元含む)に初期値を設定すると、先に変化する要素(添字)の順番で割り当てられます。

※charを用いた場合、文字終端マーク”0″だ代入される為、0が代入されます。

moji[0][0] A
moji[0][1] B
moji[0][2] 0
moji[1][0] C
moji[1][1] D
moji[1][2] 0

サンプルソース解説

【 moji[0][i] 】のループと【 moji[1][i] 】を出力するループをそれぞれ作成し、 上記の表の通り i に0を代入して一づつ加算させて出力するようにしてみました。

#include <stdio.h>

int main(void)

{

char moji[2][3]={“AB”,”CD”};

int i;

for(i=0; i<=2; ++i){

printf(“%c”,moji[0][i]);

}

printf(“\n”);

for(i=0; i<=2; ++i){

printf(“%c”,moji[1][i]);

}

return 0;

}

実行結果

要素数を増やした場合

※初期値に{ }を多様するのは、一般的で、記述を確認しやすくする為です。

char moji[6][10] = {

{“ABCDEFG”},

{“abcdefg”},

{“HIJK”},

{“hijk”},

{“LMNOPQRS”},

{“lmnopqrs”}

}

表にまとめると以下の様に代入されます

moji[][0] moji[][1] moji[][2] moji[][3] moji[][4] moji[][5] moji[][6] moji[][7] moji[][8] moji[][9]
moji[0][] A B C D E F G 0
moji[1][] a b c d e f g 0
moji[2][] H I J K 0
moji[3][] h i j k 0
moji[4][] L M N O P Q R S 0
moji[5][] l m n o p q r s 0

確認サンプル

それぞれ文字が存在する【 moji[][3] 】の項目で確認

#include <stdio.h>

int main(void)
{

char moji[6][10]={

{“ABCDEFG”},

{“abcdefg”},

{“HIJK”},

{“hijk”},

{“LMNOPQRS”},

{“lmnopqrs”}

};

int i;

for(i=0; i<=5; ++i){

printf(“moji[%d][3]=%c\n”, i, moji[i][3]);

}

return 0;

}

上記の実行結果です上記の表の通り出力されているのがわかります。

二次元配列で代入された文字列を指定する方法の確認です

※二次元配列で文字列を指定するには、配列要素の先頭を指定すれば、配列に代入された文字が出力されます。

※2、ループ実行条件の【 printf(“%s”,moji[i]); 】としておりますが、ループ条件はiに0~5まで加算してそれぞれ出力としていますので、ループ条件を書かない場合以下の記述と同じになります。

【 printf(“%s”,moji[0]); 】~【 printf(“%s”,moji[5]); 】

#include <stdio.h>

int main(void)

{

char moji[6][10]={

{“ABCDEFG”},

{“abcdefg”},

{“HIJK”},

{“hijk”},

{“LMNOPQRS”},

{“lmnopqrs”}

}

int i;

for(i=0; i<=5; ++i){

printf(“moji[%d][]=%s\n”, i, moji[i]);

}

return 0;

}

上記の実行結果です。

簡単ですが説明は以上です

コメント

タイトルとURLをコピーしました