我尝试使用strcpy将字符串复制到指针。它会导致分段错误。这就是原因。
#include <stdio.h>
#include <string.h>
int main()
{
char *str=NULL;
strcpy(str,"C-DAC");
printf("%s\n",str);
return 1;
}
答案 0 :(得分:0)
你的琴弦指向的是什么?无处!
这就是你出现分段错误的原因。您必须将堆栈上的变量分配为数组或将其定义为指针,然后使用malloc
分配内存。使用malloc
时,请不要忘记包含&#34; stdlib.h&#34;
要么这样做:
char str[6];
strcpy(str,"C-DAC");
或
char *str=malloc(sizeof(*str) * 6);
strcpy(str,"C-DAC");
答案 1 :(得分:0)
计算机内存分为不同的部分。操作系统的一个段,用于代码,用于全局变量的局部变量(称为堆栈)。现在您正在初始化指向NULL
的指针,这意味着指针str
现在指向地址0.该地址根本不适用于您的程序,它适用于操作系统。为了在您尝试编写该区域时保护您的系统,您的程序将暂停。