6

私は次のように定義された文字配列を持っていますchar *c[20];
:strcpy(c[k], "undefined);

char c[20][70]また、運が悪いと定義しようとしました。

編集:実際には、それが文字配列の配列であることを知っています。そのようにする必要があります。

4

2 に答える 2

9

これは文字配列ではありません。これは文字ポインタの配列です。を削除し*て文字配列にします。

char c[20];

次に、strcpy を使用できます。

strcpy(c, "undefined");

文字配列の配列が本当に必要な場合は、試したと言ったことを実行する必要があります。

// array that holds 20 arrays that can hold up to 70 chars each
char c[20][70];

// copy "undefined" into the third element
strcpy(c[2], "undefined");

問題は、あなたがクロージング"を見逃していた可能性がありますが、それが貼り付けエラーであったかどうかはわかりません。または、問題は、kそれを定義せずに使用している可能性があり、表示されるエラー メッセージを見ないとわかりません。

それらをすべてその文字列に設定したい場合は、それらをループするだけです:

char c[20][70];

int i;
for (i = 0; i < 20; ++i)
    strcpy(c[i], "undefined");
于 2011-08-31T00:27:36.137 に答える
3

それぞれ 70 文字の 20 個の文字列が必要な場合は、2 番目のオプションが機能するはずです。

char c[20][70];
for (int k = 0; k < 20; k++)
    strcpy(c[k], "undefined");

char *c[20]20 個のポインターの配列を定義しているだけであり、ポインターが初期化されていないため、定義は正しくありません。次の方法で機能させることができます。

char *c[20];
for (int k = 0; k < 20; k++) {
    c[k] = malloc(70);
    strcpy(c[k], "undefined");
}

// then when you are done with these strings
for (int k = 0; k < 20; k++)
    free(c[k]);
于 2011-08-31T00:29:24.980 に答える