[問題] 大量產生檔案時,只會產生一部分就停住了

作者: xucin (vegetable)   2015-02-25 11:45:05
開發平台(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個檔案以後他就停住了
黑窗看起來很正常。找不出原因
希望有人可以指引拜託了
作者: Killercat (殺人貓™)   2015-02-25 13:53:00
是不是被\0卡住....或者檔案裡面有被誤認成eof的東西?
作者: xucin (vegetable)   2015-02-25 14:22:00
沒有\0的話 陣列會被塞爆 檔案的格式都一樣 應該不會EOF
作者: Killercat (殺人貓™)   2015-02-25 14:22:00
我猜是你用字串方法去處理內容 所以\0會在意外的地方終止,你開檔改用binary而且在處理的時候避免用字串處裡看看,應該就沒問題了
作者: xucin (vegetable)   2015-02-25 16:15:00
有甚麼辦法不用字串去處理內容嗎
作者: Killercat (殺人貓™)   2015-02-25 16:50:00
避免使用strtok, strlen等宣告在string.h裡面的東西string.h裡面基本上都是認定\0是處理終點的我做法比較極端,我不用char*用vector<unsigned char>來當作buffer,不過你最好還是先確定一下是不是卡\0strlen拿來處理binary我想應該不少人中槍過
作者: OPIV (Monitor)   2015-02-25 20:50:00
有 fclose() 嗎?
作者: zetab   2015-02-25 22:11:00
free(result); <- 這裡錯了
作者: xucin (vegetable)   2015-02-27 14:41:00
OPIV 有呀OPIV 對! 我找到了 我少關掉一個result 謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com