char型の配列で文字列を宣言時に初期化する5つの方法
文字列の初期化方法を先日記事にしました。
参考:[c言語]char型で文字列を宣言時に初期化する5つの方法
今回は配列で宣言して初期化する場合です。
まずは、charのポインタを配列で宣言して初期化しています。
char* str1[] = {"str1", "str2"};
配列の要素数を省略した書き方です。
char str2[][5] = {"str1", "str2"};
先頭の要素の文字列を1文字ずつ定義しています。
終端文字に注意が必要ですね。
char str3[][5] = {{'s', 't', 'r', '1', '\0'}, "str2"};
文字列の文字数と、配列の要素数を指定して初期化しています。
char str4[2][5] = {{'s', 't', 'r', '1', '\0'}, "str2"};
サンプルコード
下記がサンプルコードになります。
$ cat sample.c
#include <stdio.h>
#include <string.h>
int main(){
int i;
char* str1[] = {"str1", "str2"};
for(i = 0; i < 2; i++){
printf("%s\n", str1[i]);
}
char str2[][5] = {"str1", "str2"};
for(i = 0; i < 2; i++){
printf("%s\n", str2[i]);
}
char str3[][5] = {{'s', 't', 'r', '1', '\0'}, "str2"};
for(i = 0; i < 2; i++){
printf("%s\n", str2[i]);
}
char str4[2][5] = {{'s', 't', 'r', '1', '\0'}, "str2"};
for(i = 0; i < 2; i++){
printf("%s\n", str2[i]);
}
return 0;
}
</string.h></stdio.h>下記が実行結果になります。
$ gcc -o sample sample.c $ ./sample str1 str2 str1 str2 str1 str2 str1 str2
