[问题] struct结构 字串复制问题

楼主: gcmtw88 (前方黄昏)   2018-08-14 14:06:56
开发平台(Platform): (Ex: Win10, Linux, ...)
WINXP
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
code block
问题(Question):
我以为 test1 跟 test3
复制字串的原理应该相同
但是 执行到test3 程式会挂掉
两者差异 只有test3是用struct包起来
不明白 为什么test3不能执行
但是 test4 又可以正常执行
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
typedef struct
{
char *data;
}element1;
typedef struct
{
char data[10];
}element2;
void main()
{
char *s1;
char s2[10];
strcpy(s1,"test1");
printf("%s\n",s1);
strcpy(s2,"test2");
printf("%s\n",s2);
element1 item1;
element2 item2;
// strcpy(item1.data,"test3");
// printf("%s\n",item1.data);
strcpy(item2.data,"test4");
printf("%s\n",item2.data);
}
补充说明(Supplement):
作者: sarafciel (Cattuz)   2018-08-14 14:13:00
指标没有初始化前指到的位置未定义
作者: james732 (好人超)   2018-08-14 14:23:00
执行没问题不代表程式没问题 XD
作者: sarafciel (Cattuz)   2018-08-14 14:28:00
s1=(char *)malloc(10*sizeof(char));对了 上面那篇忘了讲 用完记得free(s1);
作者: MOONRAKER (㊣牛鹤鳗毛人)   2018-08-14 14:34:00
开一个够大的阵列就好了 再把s1指到那阵列
楼主: gcmtw88 (前方黄昏)   2018-08-14 14:44:00
好的 明白为什么错了 谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com