[問題] 請教bug在哪裡...

看板C_and_CPP (C/C++)作者 (睡覺一直想)時間12年前 (2013/11/01 14:46), 編輯推噓3(305)
留言8則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) code:blocks 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) none 問題(Question): 不好意思又來請教習題: 這次的習題是要寫一個字串合併的函式, 原始碼在此: http://ideone.com/iqQgaZ (中間有一些debug用的code) 習題執行的結果應該要是:http://imgur.com/R0kiRoC
但我做出來會長成:http://imgur.com/nCWuogp
(有一些debug用的顯示結果) 關鍵在於LINE 117,為什麼我合併字串的時候, 合併的字串會出現亂碼? 又為什麼我把code貼到ideone就沒有這個問題呢? 我有想過會不會是\0導致的, 但String物件的size_又都不包括\0, 請教我的問題出在哪裡呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.67.52.56

11/01 14:55, , 1F
到 ideone 上會正常我覺得只是字無法顯示吧....
11/01 14:55, 1F
原來如此,所以還是我的code有問題。 LINE 73的函式究竟哪裡寫錯呢.... ※ 編輯: youneverknow 來自: 111.67.52.56 (11/01 14:58)

11/01 14:58, , 2F
new_size 錯誤. C-style string 你最後要加上 '\0'
11/01 14:58, 2F

11/01 15:02, , 3F
話說習題問題你可以直接寫信問我... Orz.
11/01 15:02, 3F
老師你進板頻率實在太高了.... 我之前有想過加\0, 但覺得加上\0後, 跟Size()的數字對不起來怪怪的。 "Hello".Size() = 5 但實際上卻是H,e,l,l,o,\0 這樣填\0進去不會是一個未定義行為嗎? http://ideone.com/hE3EFN ※ 編輯: youneverknow 來自: 111.67.52.56 (11/01 15:11)

11/01 15:23, , 4F
你要看一下 String(const char *) 做什麼事情
11/01 15:23, 4F

11/01 21:21, , 5F
後面有個\0,你一樣可以設計成Size()回傳5
11/01 21:21, 5F

11/01 21:23, , 6F
有多個\0是String自己內部知道就好了,class user不需要知道
11/01 21:23, 6F

11/02 08:51, , 7F
第83行 String conString(tmp); tmp 尾端沒 \0
11/02 08:51, 7F

11/02 08:55, , 8F
你寫的String的確不用\0結尾 但是tmp還是以前的 char *
11/02 08:55, 8F
文章代碼(AID): #1ISqv6wa (C_and_CPP)
文章代碼(AID): #1ISqv6wa (C_and_CPP)