我已經打開一個文件如何檢查文件是否打開,如果我忘了指定空文件指針
FILE *fp = fopen("file.txt","r");
fclose(fp);
的情況是,我忘了null分配給fp
現在我要檢查是否此文件已打開或未使用fp
指針
我已經打開一個文件如何檢查文件是否打開,如果我忘了指定空文件指針
FILE *fp = fopen("file.txt","r");
fclose(fp);
的情況是,我忘了null分配給fp
現在我要檢查是否此文件已打開或未使用fp
指針
您不能。關閉後fp
的值是不確定的:http://www.iso-9899.info/n1256.html#7.19.3p4
這意味着對它的任何操作都會導致未定義的行爲。
這可能幫助--->
if(fp == NULL)
printf("Error in file opening\n")
這是如何告訴你'fp'的值是否傳給'fclose()'? –
錯誤檢查..如果文件尚未打開,則不需要關閉 –
使用fopen()函數關閉它是不確定的後返回的指針。
相反,如果使用open()系統調用,您可以訪問使用FD檢查它是否開啓或沒有在/ proc文件夾
的/ proc包含了所有關於過程的細節。你可以使用/ proc/self 來訪問當前進程,裏面是一個文件fd /proc/self/fd 其中的每個文件都以fd命名。
(使用g_dir_open,g_dir_read_name和g_dir_close做上市)
如果文件無法打開,然後fopen
返回NULL以fp
。空值檢查後fopen()
。在fclose
後指定NULL。
在你的情況下,你可以通過檢查fp
爲空來檢查文件是否打開。
FILE *fp = fopen("file.txt","r");
if (fp == NULL) {
printf("not open\n");
return -1 ;
}
else
printf("File open\n");
if(fp != NULL) {
fclose(fp);
fp = NULL;
}
成功完成後fopen()函數,fdopen()和freopen函數()返回一個文件指針。否則,返回NULL並將errno設置爲指示錯誤。
嗯......不要忘了空出來的指針? –
不要試圖隱藏問題。正確地修復它,並在'fclose'後執行NULL賦值。 – user694733
雖然,你可以做你想要的 –