文字列の配列が必要です。文字列の長さはコンパイル時にわかっており、各文字列がこれだけのスペースを占めることが重要です。一方、文字列の数は実行時にのみわかります。このための構文は何ですか?
char* data[STRLENGTH]構文が正しくありません。char** dataほとんどは機能しますが、sizeof(data[0])間違っています-と等しくなるはずSTRLENGTHです。
@Danielは正しいですが、このコードはそれを読む人々を混乱させる可能性があります-それはあなたが通常行うことではありません。わかりやすくするために、次の2つの手順で行うことをお勧めします。
typedef char fixed_string[STRLENGTH];
fixed_string *data;
char (*data)[LEN]; // where LEN is known at compile time
...
data = malloc(sizeof *data * rows); // where rows is determined at run time
...
strcpy(data[i], some_name);
...
printf("name = %s\n", data[i]);
...
free(data);
dataはポインタ型であり、配列型ではないことに注意してください(はの要素配列dataへのポインタです)。この呼び出しは、長さの配列を保持するのに十分なメモリを動的に割り当てます。それぞれがタイプになります。 LENcharmallocrowsLENdata[i]char [LEN]
char* data[STRLENGTH]
STRLENTGHへのポインタの配列を宣言しcharます。STRLENGTH charsの配列へのポインタを宣言するには、次を使用します。
char (*data)[STRLENGTH]