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

看板Programming作者時間17年前 (2008/06/10 18:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/8 (看更多)
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ char *str1="abcd"; char *str2 = "1234"; //<----- char *str3; strcpy(str3,str1); printf("str3:%s\n",str3); exit(0); } 抱歉! 前面的例子不正確! 這裡如果保留 //<----- 這一行,編譯會過 但是執行會出錯,拿掉這一行則執行正確 上一次有人回應:=======> 一定要配置空間吧, 不然不會自動生出來 多第二行就有時候沒事, 那是剛好而已 因為多配置那段空間, *str3剛好被擠到一個可以寫 入的地方沒事 不能因為"髒到"就把它當慣例 char *當成空字串用又不配置空間, 都是一些舊的用法 在老的compiler上習以為常 現在不要再看那種範例了 ===>而我的疑問是 char *當成空字串用又不配置空間, 都是一些舊的用法 那麼該怎麼做才正確? "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): #18JbWZ00 (Programming)
討論串 (同標題文章)
文章代碼(AID): #18JbWZ00 (Programming)