[問題] 字串連接的實作程式碼解釋

看板C_and_CPP (C/C++)作者 (qq)時間13年前 (2013/04/28 16:00), 編輯推噓2(209)
留言11則, 6人參與, 最新討論串1/1
//-------------------- char *strcat(char *dest,char *source) { char *ptr=dest; //找到dest字串的最後 while(*ptr++!='\0'); ptr--; //複製字串 while((*ptr++=*source++)!='\0'); return dest; //-------------------- 請問 while(*ptr++!='\0'); ptr--; 這裡書上的註解是要找到dest的最後位置 但是為什麼要ptr-- ptr--不是把位置往後移了嗎? while((*ptr++=*source++)!='\0'); return dest; 還有這個迴圈,看不出來他的意思是什麼 能請各位解釋一下嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.235.172.204

04/28 16:08, , 1F
1.直接用實例去看應該能看懂2.它在賦值喔
04/28 16:08, 1F

04/28 16:11, , 2F
+過了-回來到原位而已
04/28 16:11, 2F

04/28 21:38, , 3F
因為ptr++會先eval再++ 所以條件成立時 ptr已經被+
04/28 21:38, 3F

04/28 21:39, , 4F
到\0 的後面一個位置了 所以把它減回來接字串
04/28 21:39, 4F

04/28 22:19, , 5F
*ptr++,一開始是從第一個元素開始(ptr+0),當第一個元素
04/28 22:19, 5F

04/28 22:22, , 6F
不為\0時,條件成立,執行ptr--;我的理解是這樣,請問錯在哪
04/28 22:22, 6F

04/28 22:27, , 7F
注意while( )後面有個分號.
04/28 22:27, 7F

04/28 22:40, , 8F
當*ptr == '\0'時會跳出while迴圈,但是因為*ptr++
04/28 22:40, 8F

04/28 22:41, , 9F
在執行完這行後,*ptr會被再多加1,所以要減回來
04/28 22:41, 9F

04/29 00:07, , 10F
謝謝樓上幾位,是我少看分號才會理解錯= =
04/29 00:07, 10F

04/29 00:09, , 11F
順便請問一下之前的PO文,代碼:#1HQwPfbW,我有提問在推文
04/29 00:09, 11F
文章代碼(AID): #1HVDSq_v (C_and_CPP)
文章代碼(AID): #1HVDSq_v (C_and_CPP)