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

看板C_and_CPP (C/C++)作者 (vegetable)時間11年前 (2015/02/25 11:45), 編輯推噓1(1015)
留言16則, 4人參與, 最新討論串1/1
開發平台(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

02/25 13:53, , 1F
是不是被\0卡住....
02/25 13:53, 1F

02/25 13:54, , 2F
或者檔案裡面有被誤認成eof的東西?
02/25 13:54, 2F

02/25 14:22, , 3F
沒有\0的話 陣列會被塞爆 檔案的格式都一樣 應該不會EOF
02/25 14:22, 3F

02/25 14:22, , 4F
我猜是你用字串方法去處理內容 所以\0會在意外的地方
02/25 14:22, 4F

02/25 14:23, , 5F
終止,你開檔改用binary而且在處理的時候避免用字串處
02/25 14:23, 5F

02/25 14:23, , 6F
裡看看,應該就沒問題了
02/25 14:23, 6F

02/25 16:15, , 7F
有甚麼辦法不用字串去處理內容嗎
02/25 16:15, 7F

02/25 16:50, , 8F
避免使用strtok, strlen等宣告在string.h裡面的東西
02/25 16:50, 8F

02/25 16:51, , 9F
string.h裡面基本上都是認定\0是處理終點的
02/25 16:51, 9F

02/25 16:52, , 10F
我做法比較極端,我不用char*用vector<unsigned char>
02/25 16:52, 10F

02/25 16:52, , 11F
來當作buffer,不過你最好還是先確定一下是不是卡\0
02/25 16:52, 11F

02/25 16:52, , 12F
strlen拿來處理binary我想應該不少人中槍過
02/25 16:52, 12F

02/25 20:50, , 13F
有 fclose() 嗎?
02/25 20:50, 13F

02/25 22:11, , 14F
free(result); <- 這裡錯了
02/25 22:11, 14F

02/27 14:41, , 15F
OPIV 有呀
02/27 14:41, 15F

02/27 14:44, , 16F
OPIV 對! 我找到了 我少關掉一個result 謝謝
02/27 14:44, 16F
文章代碼(AID): #1KxKL5wr (C_and_CPP)
文章代碼(AID): #1KxKL5wr (C_and_CPP)