Re: 還是同一個問題 (c語言)
#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
>
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 4 之 8 篇):