Re: 還是同一個問題 (c語言)

看板Programming作者時間17年前 (2008/06/10 18:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/8 (看更多)
如果把str3 配置空間,那麼即使 //<----- 這一行存在 執行也會正確 int main(void){ char *str1="abcd"; char *str2 = "1234"; //<----- char *str3; str3= (char*) malloc(10); strcpy(str3,str1); printf("str3:%s\n",str3); exit(0); } "Alien" <adrianshum.bbs@ptt.cc> 撰寫於郵件新聞:4aP3GV$6TX@ptt.cc... >※ 引述《"mynews" <noreplay@gmail.com>, 看板: Programming》之銘言: > : #include <stdio.h> > : #include <stdlib.h> > : #include <string.h> > : int main(void){ > : char *str1="123"; > : char *str4="456"; > : char *str3="789"; > : strcpy(str3,str4); > : exit(0); > : } > : 這程式編譯會過,但是執行會出現錯誤;string 在使用前需要配置空 > : 間,不過我常在很多opensource 看到這類的用法 > : char *__progname = "prog"; > : 這樣用到底是不是正確的用法?安全的使用字串應該使用陣列? > : char str[20]="prog"; > : 那 chr *string[50] ; (字串陣列) 這種用法安全嗎? > : 另外也有人這樣使用 chr str[]="prog"; > : 到底那些用法是安全且正確? > > 問題不在於配置與否, 而是 > 你的 strcpy 的目標位置是不 > 能改變的 (指向 string literal) > > alien > > -- > ※ 發信站: 批踢踢實業坊(ptt.cc) > ◆ From: 202.155.236.82 >
文章代碼(AID): #18JbWa00 (Programming)
討論串 (同標題文章)
文章代碼(AID): #18JbWa00 (Programming)