通常の文字列はC言語の場合、配列として変数に代入できる。
char s[] = “ABCDE”;
上記の場合、「E」の後に「\0」ヌル文字が追加されるため、配列要素数は6となる。
C言語で文字列を複数個変数に代入したい場合、2次元配列を使う。
/* 複数個の文字列を代入する */ #include <stdio.h> int main(void) { char s[][4] = {"ABC", "DE", "FGH"}; printf("%s\n", s[0]); printf("%s\n", s[1]); printf("%s\n", s[2]); return 0; }
実行イメージ
ABC
DE
FGH
上記プログラムを実行した際の配列sのイメージ
ちなみにシングルクォーテーションを使い1文字ずつ代入もできるが、あまり使わない方法だろう。
/* 複数個の文字列を代入する2 */ #include <stdio.h> int main(void) { char s[][3] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'}; printf("%s\n", s[0]); printf("%s\n", s[1]); printf("%s\n", s[2]); return 0; }
この場合実行は出来るが、配列s[0]とs[1]は最後にヌル文字が入力されないため、printf関数の表示ではおかしくなる。
この場合配列sのイメージはこんな感じ
わたしのコンパイラでは、以下のように表示されてしまった。
ABCDEFG
DEFG
G
きちんと利用できるようにするためには、こんな風に強制的にヌル文字を追加せねばならない。
/* 複数個の文字列を代入する3 */ #include <stdio.h> int main(void) { char s[][3] = {'A', 'B', '\0', 'C', 'D', '\0', 'E'}; printf("%s\n", s[0]); printf("%s\n", s[1]); printf("%s\n", s[2]); return 0; }
AB
CD
E
サンプル:2次元配列で設定した英単語を全て表示する
/* 2次元配列で設定した英単語を全て表示する */ #include <stdio.h> int main(void) { int i; char tango[][10] = {"Apple", "Kiwi", "Lemon", "Melon", "Orange"}; for(i=0; i<5; i++){ printf("%s\n", tango[i]); } return 0; }
実行イメージ
Apple
Kiwi
Lemon
Melon
Orange
コメント