為什麼這篇Fclose man鄉民發文收入到精華區:因為在Fclose man這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者deo2000 (800IM)看板C_and_CPP標題[問題] 如果 feof()==1 還需...
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux, 但是這個問題應該不分平台吧?
我這邊在 0!=feof() 的時候 fclose 都會發生Segment fault
類似狀況到stackoverflow上去找解答,都是說:
1.因為重複fclose
2.fopen根本就沒有成功
但是我檢查過沒有上述兩點,所以懷疑是不是已經到檔案結尾時,就不用fclose?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.205.43
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1475552253.A.F59.html
//打開檔案路徑與MD5清單
FILE* fptrMD5List = fopen(strMD5List,"r");
if(NULL == fptrMD5List)
{
printf("%s open failed !\n",(char*)fptrMD5List);
exit(1);
}
//逐檔驗證
while(NULL != fgets(strStream, 256, fptrMD5List))
{
//strsep會截走定位點之前的字串
strFilePath = strsep(&strStream,"\t");//截出檔案路徑
strFileMD5 = strsep(&strStream,"\n");//截出該檔案MD5
printf("Target File: %s\n",strFilePath);
//這邊都有印出資訊
//回圈內都沒動到 fptrMD5List
}
printf("fptrMD5List=%p\n",fptrMD5List);
if(NULL != fptrMD5List)
{
fclose(fptrMD5List); //Segmentation fault (core dumped)
}
※ 編輯: deo2000 (125.227.205.43), 10/04/2016 18:46:30
※ 編輯: deo2000 (125.227.205.43), 10/04/2016 18:52:49
感謝, 做完 strsep 以後重新配置 strStream 就好了
printf前面加上這行
strStream = (char*)malloc(256);
※ 編輯: deo2000 (125.227.205.43), 10/04/2016 19:05:28