strcpy()崩溃

ZJE_ANDY 2017-03-29 07:03:54
下面的代码实在搞不懂为什么会崩溃,应该是strcpy的问题
#include <stdio.h> 
#include <string.h>

typedef struct T
{
char *name;
int num;
}test;

int main()
{
test *p = (test*)malloc(sizeof(test));
strcpy(p->name,"jim");
printf("%s\n",p->name);
return 0;
}
...全文
223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2017-03-29
  • 打赏
  • 举报
回复
引用 8 楼 u014453898 的回复:
那为什么
int main()
{
	char *name;
	strcpy(name,"jimy");
	return 0;
}
又不会发生错误呢
不崩溃不代表下次不崩溃,也不代表在其他环境下不崩溃,也不代表正确
ZJE_ANDY 2017-03-29
  • 打赏
  • 举报
回复
那为什么
int main()
{
	char *name;
	strcpy(name,"jimy");
	return 0;
}
又不会发生错误呢
bksnet 2017-03-29
  • 打赏
  • 举报
回复
我不知道malloc是怎么用的,只是猜猜。代码可能 不可行。意思就是分配一个适当的存储字符数组的空间。让后让name指向它。
flying_music 2017-03-29
  • 打赏
  • 举报
回复
你的结构体里只放了一个char指针和一个int变量,所以字符串没地方放,应该这样

    test *p = (test*)malloc(sizeof(test));
    p->name = (char*)malloc(64*sizeof(char));//64是你放的最多的字符数
    strcpy(p->name,"jim");
bksnet 2017-03-29
  • 打赏
  • 举报
回复
#include <stdio.h> #include <string.h> #define STRSIZE = 10; typedef struct T { char *name; int num; }test; int main() { test *p = (test*)malloc(sizeof(test)); p->name = (char *)malloc(STRSIZE); strcpy(p->name,"jim"); printf("%s\n",p->name); return 0; }
ZJE_ANDY 2017-03-29
  • 打赏
  • 举报
回复
结构体分配的空间不包含结构体里面的成员吗??
bravery36 2017-03-29
  • 打赏
  • 举报
回复
name没有malloc空间。
ZJE_ANDY 2017-03-29
  • 打赏
  • 举报
回复
请问那应该如何改呢
bksnet 2017-03-29
  • 打赏
  • 举报
回复
给结构分配了内存,但没给name分配空间。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧