第1个回答 2008-09-09
void main(void)
{
char *str;// =NULL;
分配50Byte内存
str = (char *)malloc(50);
让str丢掉原来分配的内存,指向字符串"jjjlk",因此其空间只有6Byte
str = "jjjlk";
你想将hello world连接到str后面,但是这时候str所指向的空间不够,所以出错
strcpy(str+6,"hello world");
printf(str);
}
----------------
修改后
void main(void)
{
char *str;// =NULL;
str = (char *)malloc(50);
*str = '\0';
strcat(str, "jjjlk");
strcat(str, "hello world");
printf(str);
free(str);
}
第2个回答 2008-09-09
出错并不是空间不足,当然空间不足也会引发各种问题。
但是现在这里并不是空间不足的错误,而因为是str被指向了常数字符串"jjjlk",它是只读的不允许修改的,而strcpy试图修改它所以出错了。
解决办法楼上各位已经说了。
第3个回答 2008-09-09
void main(void)
{
char *str;// =NULL;
str = (char *)malloc(50);
strcpy(str,"jjjlk"); //指针不能直接赋值;这们就可以了。
strcpy(str+6,"hello world");
printf("%s",str);//输出时应加上 格式控制,否则应使用puts(str);
}
第4个回答 2008-09-09
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char *str;
str=(char *)malloc(50);
str="jjjlk";
strcpy(str+6,"hello world");
puts(str);
free(str);
}