2

strcpy関数に問題があります。Cを使用します。この単純なコード(以下)の要点は、文字列を配列からポインターの配列にコピーすることです。

char string[20] = "ABCDEFGH\0";
char * array_of_pointers[20];

// now I want to copy string to the first available slot;

strcpy(array_of_pointers[0],string);

次に、strcpyは私にエラーをスローします:

Unhandled exception: Access violation writing location 0x00000000.

なんで?この問題はおそらく単純なことですが、私にはまったく手がかりがありません。

4

2 に答える 2

5

ターゲットバッファが初期化されていません。 array_of_pointers[0]は、(この場合はアクセス違反からのエラー情報に基づいて)アドレス0を指す単なるポインタです。初期化する必要があります。おそらく:

array_of_pointers[0] = malloc( strlen( string ) + 1 );

array_of_pointers20個のポインタの配列です。そのように定義すると、その配列の各エントリは、使用する前に初期化する必要があります。mallocを使用して(または場合によってstrdupは)メモリを割り当てる場合は、を使用freeしてメモリを解放することも忘れないでください。

于 2012-12-08T15:33:44.093 に答える
1

array_of_pointersを初期化する必要があります:

array_of_pointers[0] = malloc(strlen(string)+1);

または最高:

array_of_pointers[0] = strdup(string);
于 2012-12-08T15:42:34.213 に答える