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_pointers是一个包含 20 个指针的数组。像这样定义的,该数组中的每个条目都必须在使用之前进行初始化。还要记住,如果您确实使用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 回答