#include
#include
void main(){
char *s,*t="program";
strcpy(s,t);
printf("%s\n",s);
}
#include
void main(){
char *s,*t="program";
strcpy(s,t);
printf("%s\n",s);
}
你都没给指针s分配内存,当然崩溃。
char *s=" ";
要给指针分配内存才可以使用,不然会崩溃。
因为你没有给拷贝的目标字符串开辟空间,目标字符串改为:char s[20]={0}就好,只要目标字符串开辟的空间大于等于源字符串就好。
你的char * 指针s没有初始化,所以它是一个野指针,然后你的strcpy(s,t);语句等于是去操作一个野指针,这是很危险的,任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,也就是说他可能指向一段你现在正在使用的程序所占用的内存,然后你现在要去修改它,等于是要修改别的程序,这是不被允许的。所以,你应该写成char * s = NULL;
对指针的操作实际上是对内存地址的操作,在使用指针前,需要对其赋值,使它指向一块合法的内存地址。
题目中的代码可以修改如下:
#include <stdio.h>
#include <string.h>
int main()
{
char chr[40]={};
char *s = chr;
char *t="program";
strcpy(s,t);
printf("%s\n",s);
}
如果对您有帮助,请点击采纳答案好吗,谢谢~~
信不信你就这样拷贝,你的电脑会爆炸?!