2017-03-24 68 views
0

在主要我創建一個文件指針,將它傳遞給一個函數打開它,我想有一個單獨的函數來關閉文件,但我不能關閉文件。我錯過了什麼?如何調用函數來關閉文件使用FILE * fp

我沒有得到一個錯誤,但我檢查的方式表明文件沒有關閉。

感謝您對此的幫助。

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    FILE *inFile, *outFile; 
    FileOpen(&inFile, &outFile); 
    FileClose(&inFile, &outFile); 

    getch(); 
    return 0; 
} 

void FileOpen(FILE **inFile, FILE **outFile) 
{ 
//--Open InFile-------------------------------- 
    if ((*inFile = fopen("a.txt","r")) == NULL){ 
     printf("\nError Opening File. "); 
     exit(0); 
    } 
    else { 
     printf("File Opened\n"); 
     } 

//--Open OutFile-------------------------------- 
    if ((*outFile = fopen("b.txt","w")) == NULL){ 
     printf("\nError Opening File. "); 
     exit(0); 
    } 
    else { 
     printf("File Opened\n"); 
     } 
} 


void FileClose(FILE **inFile, FILE **outFile) 
{ 
//--Close InFile---------- 
    if (fclose(*inFile)){ 
     printf("File Closed\n"); 
    } 
    else { 
     printf("\nError Closing InFile File. "); 
    } 

//--Close outFile--------- 
    if (fclose(*outFile)){ 
     printf("File Closed\n"); 

    } 
    else { 
     printf("\nError Closing OutFile File. "); 
    } 
} 
+0

有時很簡單:)謝謝! – dmaelect

回答

6

你誤會return value:0上成功fclose的回報,所以你需要檢查if (fclose(*inFile) == 0)

+0

「所以你需要檢查是否(fclose(* inFile)== 0)」 - 但如果失敗怎麼辦? –

+0

@NeilButterworth:使用'else'塊? –

+0

我的意思是如果fclose()失敗,你有什麼選擇?我也有興趣知道是否有人曾經發生過fclose()失敗,至少從軟盤開始就是如此。 –

相關問題