我正在学习一些新的东西,并陷入一个简单的strcpy操作。
我不明白为什么我第一次印刷的时候能用,但第二次印刷的时候不行。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *name;
char *altname;
name=(char *)malloc(60*sizeof(char));
name="Hello World!";
altname=name;
printf("%s \n", altname);
altname=NULL;
strcpy(altname,name);
printf("%s \n", altname);
return 1;
}
最佳答案
您需要为altname
分配内存:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *name;
char *altname;
name=(char *)malloc(60*sizeof(char));
name="Hello World!";
altname=name;
printf("%s \n", altname);
altname=NULL;
// allocate memory, so strcpy has space to write on ;)
altname=(char *)malloc(60*sizeof(char));
strcpy(altname,name);
printf("%s \n", altname);
return 1;
}