[問題] 利用指標寫複製字串

看板C_and_CPP (C/C++)作者 (ffxiou)時間16年前 (2009/09/20 10:33), 編輯推噓5(504)
留言9則, 5人參與, 最新討論串1/1
最近在看聖經K&R II這本書,其中對於書本利用指標複製字串的函式: /*strcpy:copy t to s;pointer version 1 */ void strcpy(char *s,char *t) { while((*s=*t)!='\0'){ s++; t++; } } 我的疑問是當你宣告char *s時,不是不能更改s所指的內容質嗎(新手十誡的第四項 ) 這問題我想了很久,不知道是哪裡的觀念有問題!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.11.62

09/20 10:39, , 1F
可以改變阿 這是外部傳進來的指標也許指向 *s=char[]
09/20 10:39, 1F

09/20 10:39, , 2F
不能改變的是 char*s="不能改變"
09/20 10:39, 2F

09/20 11:00, , 3F
如果不用函式方式去寫,直接寫在主程式 要怎麼寫
09/20 11:00, 3F

09/20 11:37, , 4F
while(*s++=*t++); 就夠了
09/20 11:37, 4F

09/20 19:37, , 5F
這時候一定要很邪惡的問, 如果兩字串有overlap怎麼辦XD
09/20 19:37, 5F

09/20 19:47, , 6F
例如 s==t+1 的時候嗎 XDDDD
09/20 19:47, 6F

09/20 20:08, , 7F
樓上case只要從整個s[]都assign當前t+1的就行了(大誤XD)
09/20 20:08, 7F

09/20 21:47, , 8F
strcpy 也沒保證 overlap 會正常工作啊 ...
09/20 21:47, 8F

09/20 21:47, , 9F
這種事交給 client 擔心就好了(煙)
09/20 21:47, 9F
文章代碼(AID): #1AjPI1Cl (C_and_CPP)
文章代碼(AID): #1AjPI1Cl (C_and_CPP)