C で文字列の配列を作成するにはどうすればいいですか? 質問する

C で文字列の配列を作成するにはどうすればいいですか? 質問する

C で文字列の配列を作成しようとしています。次のコードを使用すると、

char (*a[2])[14];
a[0]="blah";
a[1]="hmm";

gcc で「警告: 互換性のないポインター型からの割り当て」というメッセージが表示されます。正しい方法は何ですか?

printf(a[1]);編集: これを行うと、「hmm」と正しく出力されるのに、なぜコンパイラの警告が表示されるのか不思議です。

ベストアンサー1

文字列を変更したくない場合は、次のようにします。

const char *a[2];
a[0] = "blah";
a[1] = "hmm";

このようにすると、 への 2 つのポインターの配列が割り当てられます。これらのポインターは、const char静的文字列と のアドレスに設定されます"blah""hmm"

実際の文字列の内容を変更したい場合は、次のようにする必要があります。

char a[2][14];
strcpy(a[0], "blah");
strcpy(a[1], "hmm");

これにより、それぞれ 14 個の連続した配列が 2 つ割り当てられchar、その後、静的文字列の内容がそれらの配列にコピーされます。

おすすめ記事