strcpy传递初始化空指针c

我正在尝试以下代码:

int main() { char *yo = "yo"; char *whaddup = NULL; strcpy(whaddup,yo); } 

我得到了一个段错误。 在这里完成C noob – 其他地方说我应该将whaddup初始化为数组。 为什么我不能传入指向null的指针?

任何strcpy文档都会告诉您目标字符串应该是一个大小足以容纳字符串和NUL终结符的char数组。

所以你需要的是类似的东西

 char* yo = "yo"; char* whaddup = malloc(strlen(yo)+1); strcpy(whaddup, yo); 

或者您可以使用strdup函数为您执行此strdup ,但它不是标准的,因为它只是POSIX。

您必须将whaddup声明为字符数组,或者使用malloc为其理想地分配空间。

 int main() { char *yo = "yo"; char *whaddup = malloc(sizeof(char) * 8); // buffer for 8 characters strcpy(whaddup,yo); } 

通过将whaddup初始化为NULL您不会在内存中给它任何空间,因此即使将一个字符复制到其中也会导致分段错误。

您可以将指针传递给null,但不能将指针中的字符串复制到null。

函数char* strcpy(char* dest, const char* src)是从地址src到地址dest复制字符串,你的destnull