作者Anonymoux (猜猜偶素隨 ? ^*^)
看板C_and_CPP
標題[問題] fclose
時間Thu Nov 25 23:18:57 2010
遇到的問題: (題意請描述清楚)
fclose 後 在windows explorer中 無法刪除檔案
希望得到的正確結果:
正常來說可以被刪除
程式跑出來的錯誤結果:
無法刪除檔案(被OS lock住?)
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
MFC vs2005
有問題的code: (請善用置底文標色功能)
file *fp[5];
void savefp()
{
static first = true;
if(first) while(i++<5)fp[i] = fopen(filename[i]);//open 5 file successfully
first = false;
//file operations here...
if(last) while(i++<5) fclose(fp[i]);
}
main()
{
savefp();
//some operations
last = true;
savefp(); //second call
}
補充說明:
結果是
fp[4] (最後一個) 無法被刪除 其他都可以刪除
確定fclose(fp[4])回傳值為0
但就是不曉得為什麼不能刪 除非關掉該應用程式
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.160.242
推 ledia:i 怎麼跑的, 資訊太少 11/25 23:26
→ ledia:first 有設回 false 嗎 11/25 23:26
謝謝提醒 已修正
這是psuedo code 確定 fopen fclose 都成功
因為有五個檔案被建立在資料夾中
file1.txt file2.txt file3.txt file4.txt file5.txt
也都有資料被寫入
唯獨file5在 second call後無法被刪除
※ 編輯: Anonymoux 來自: 123.204.160.242 (11/25 23:33)
→ stupid0319:fp[5]爆了吧 11/25 23:38
→ stupid0319:while(i<5)fp[i++]; 這樣應該比較對 11/25 23:39