看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DEVC++ 問題(Question): 我要把很多個txt檔案更改內容後輸出。一開始程式run得很順 沒有任何錯誤,檔案成功產出。但是大概做到幾百個以後他就不會產出檔案 黑窗正常在跑程式沒有任何bug 想請問為什麼會這樣 餵入的資料(Input): *.txt 預期的正確結果(Expected Output): *.txt.data 錯誤結果(Wrong Output): 黑窗沒有錯誤沒有顯示bug 但是檔案沒有成功產出 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/ebBNNm 補充說明(Supplement): 這是一個很大的資料夾每個資料夾內又有資料夾 一個while迴圈跑1層 跑到底之後取得.txt檔後轉檔產出.data檔案 大概只會跑出約100~200個檔案以後他就停住了 黑窗看起來很正常。找不出原因 希望有人可以指引拜託了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.118.127.111 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1424835909.A.EB5.html
Killercat: 是不是被\0卡住.... 02/25 13:53
Killercat: 或者檔案裡面有被誤認成eof的東西? 02/25 13:54
xucin: 沒有\0的話 陣列會被塞爆 檔案的格式都一樣 應該不會EOF 02/25 14:22
Killercat: 我猜是你用字串方法去處理內容 所以\0會在意外的地方 02/25 14:22
Killercat: 終止,你開檔改用binary而且在處理的時候避免用字串處 02/25 14:23
Killercat: 裡看看,應該就沒問題了 02/25 14:23
xucin: 有甚麼辦法不用字串去處理內容嗎 02/25 16:15
Killercat: 避免使用strtok, strlen等宣告在string.h裡面的東西 02/25 16:50
Killercat: string.h裡面基本上都是認定\0是處理終點的 02/25 16:51
Killercat: 我做法比較極端,我不用char*用vector<unsigned char> 02/25 16:52
Killercat: 來當作buffer,不過你最好還是先確定一下是不是卡\0 02/25 16:52
Killercat: strlen拿來處理binary我想應該不少人中槍過 02/25 16:52
OPIV: 有 fclose() 嗎? 02/25 20:50
zetab: free(result); <- 這裡錯了 02/25 22:11
xucin: OPIV 有呀 02/27 14:41
xucin: OPIV 對! 我找到了 我少關掉一個result 謝謝 02/27 14:44