文字列の配列が必要です。文字列の長さはコンパイル時にわかっており、各文字列がこれだけのスペースを占めることが重要です。一方、文字列の数は実行時にのみわかります。このための構文は何ですか?
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
へのポインタです)。この呼び出しは、長さの配列を保持するのに十分なメモリを動的に割り当てます。それぞれがタイプになります。 LEN
char
malloc
rows
LEN
data[i]
char [LEN]
char* data[STRLENGTH]
STRLENTGH
へのポインタの配列を宣言しchar
ます。STRLENGTH
char
sの配列へのポインタを宣言するには、次を使用します。
char (*data)[STRLENGTH]