2014-01-30 23 views

回答

1

這可能幫助--->

if(fp == NULL) 
    printf("Error in file opening\n") 
+0

這是如何告訴你'fp'的值是否傳給'fclose()'? –

+0

錯誤檢查..如果文件尚未打開,則不需要關閉 –

0

使用fopen()函數關閉它是不確定的後返回的指針。

相反,如果使用open()系統調用,您可以訪問使用FD檢查它是否開啓或沒有在/ proc文件夾

的/ proc包含了所有關於過程的細節。你可以使用/ proc/self 來訪問當前進程,裏面是一個文件fd /proc/self/fd 其中的每個文件都以fd命名。

(使用g_dir_openg_dir_read_nameg_dir_close做上市)

-1

如果文件無法打開,然後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設置爲指示錯誤。

What happens to FILE pointer after file is closed?