我有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.
为什么呢?我知道这个问题可能很简单,但我真的没有线索。
答案 0 :(得分:5)
目标缓冲区尚未初始化。 array_of_pointers[0]
只是一个指针(在这种情况下基于访问冲突的错误信息)指向地址0.您需要初始化它。可能:
array_of_pointers[0] = malloc( strlen( string ) + 1 );
array_of_pointers
是一个包含20个指针的数组。这样定义,必须初始化该数组中的每个条目才能使用它。还要记住,如果您使用malloc
(或可能strdup
)来分配内存,请使用free
释放内存。
答案 1 :(得分:1)
您需要初始化array_of_pointers:
array_of_pointers[0] = malloc(strlen(string)+1);
或者最好:
array_of_pointers[0] = strdup(string);