[問題] 如果 feof()==1 還需要fclose嗎?(已補碼)

作者: deo2000 (800IM)   2016-10-04 11:37:31
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux, 但是這個問題應該不分平台吧?
我這邊在 0!=feof() 的時候 fclose 都會發生Segment fault
類似狀況到stackoverflow上去找解答,都是說:
1.因為重複fclose
2.fopen根本就沒有成功
但是我檢查過沒有上述兩點,所以懷疑是不是已經到檔案結尾時,就不用fclose?
作者: CoNsTaR ((const *))   2016-10-04 11:39:00
你要不要 fseek 回去再 close 一次試試看
作者: Schottky (順風相送)   2016-10-04 11:44:00
應該是有別的地方寫錯,比如說 FILE stream 內容不正確
作者: longlongint (華哥爾)   2016-10-04 12:07:00
feof(裡面有東西嗎)
作者: kevingwn (如雲如風的人生)   2016-10-04 12:49:00
不fclose()要怎麼釋放fopen()所配置的FILE*資源?
作者: Qbsuran (Qbsuran)   2016-10-04 13:55:00
fclose後給NULL 用NULL判斷要不要fclose
作者: descent (「雄辯是銀,沉默是金」)   2016-10-04 14:12:00
貼完整程式碼看看
作者: jacky1989   2016-10-04 15:00:00
開檔確定有成功嗎?
作者: wtchen (沒有存在感的人)   2016-10-04 17:40:00
程式碼貼上來看看,不是每個人都有水晶球的。
作者: Schottky (順風相送)   2016-10-04 18:53:00
請貼完整的程式碼,錯誤出在你沒貼出來的地方或是檢查一下 fopen 成功時的 fptrMD5List 和 fclose 時其指標值是否一樣,或是已經發生原本不該發生的變動然後 strsep 處理那邊我怎麼看都覺得很危險你應該檢查 strFilePath 和 strFileMD5 的值是否為 NULL
作者: blackwindy (黑色的風)   2016-10-04 19:03:00
&strStream?
作者: Schottky (順風相送)   2016-10-04 19:04:00
嗯,&strStream 那邊也是錯的
作者: shadow0326 (非議)   2016-10-04 19:07:00
八成哪邊有非法存取 把stack弄爛了這種bug不一定出在seg fault的那個變數,要看整個區塊
作者: Schottky (順風相送)   2016-10-04 19:17:00
建議你把 strsep 的 man page 重看一次,strsep 的第一個參數型態比較特別,但宣告你沒寫出來照你這個動態配置法基本上到時候 free 時也是會出槌因為 strStream 的值會被 strsep 改動

Links booklink

Contact Us: admin [ a t ] ucptt.com