[問題] 我自己試做的 讀入動態字串

看板C_and_CPP (C/C++)作者 (FreedomKnight)時間15年前 (2011/05/25 18:00), 編輯推噓0(0021)
留言21則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 這是我試做的動態字串 但是呀 還是會有seg fault 前幾個字會有讀到 不過到後面可能就會出錯了 實在是不知道哪裡讓他壞掉的 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) http://pastie.org/1970472 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.0.214.62

05/25 18:56, , 1F

05/25 18:56, , 2F
問題在於realloc必須是一開始malloc的位置
05/25 18:56, 2F

05/25 18:58, , 3F
你realloc 成1個char要做什麼
05/25 18:58, 3F

05/25 19:00, , 4F
= =我眼殘...
05/25 19:00, 4F

05/25 20:44, , 5F
感謝大大 我懂了 那我自己又改成了
05/25 20:44, 5F

05/25 20:44, , 6F
*(string+size - 1) = c;
05/25 20:44, 6F

05/25 20:45, , 7F
因為我覺得用不是用陣列宣告 不敢用中括號
05/25 20:45, 7F

05/25 20:46, , 8F
有一次compiler說整數不能丟到指標裡
05/25 20:46, 8F

05/25 20:56, , 9F
不好意思唷 那printf是不是要讀到NULL 才會印字串
05/25 20:56, 9F

05/25 20:56, , 10F
可是我不知道我哪裡有加NULL耶
05/25 20:56, 10F

05/25 21:19, , 11F
看不懂你的問題
05/25 21:19, 11F

05/25 21:26, , 12F
函式內 new 出來的空間記得要讓主程式的指標接住
05/25 21:26, 12F

05/25 21:28, , 13F
加上有判斷輸入哪種字元才結束讀取,再來一開始你根本
05/25 21:28, 13F

05/25 21:29, , 14F
沒有多一個空間放'\0',所以你最後一句的推斷怪怪的
05/25 21:29, 14F

05/25 21:32, , 15F
拍謝第二句的有改成沒有,打錯字
05/25 21:32, 15F

05/25 21:33, , 16F
http://pastie.org/1971243 完整一點大概是寫成這樣
05/25 21:33, 16F

05/25 21:44, , 17F
我試了 把加上'\0'那行註解掉 一樣能印
05/25 21:44, 17F

05/25 21:46, , 18F
所以我才覺得很神奇 會不會是系統那邊剛好是放0呀
05/25 21:46, 18F

05/25 21:46, , 19F
這種事有做有保佑
05/25 21:46, 19F

05/25 21:48, , 20F
你那叫未定義行為,後續問題爆大,不要養這個壞習慣
05/25 21:48, 20F

05/25 21:50, , 21F
還有printf就算沒有\0,它也可以幫你印列字串的.
05/25 21:50, 21F
文章代碼(AID): #1DtDDLEY (C_and_CPP)
文章代碼(AID): #1DtDDLEY (C_and_CPP)