[問題] 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