簡體   English   中英

C - 從文件中讀取

[英]C - reading from file

我正在嘗試編寫一個程序,在按下鍵盤上的“v”按鈕后,它會打開一個文件以供讀取,並在按下“k”后關閉文件並結束程序。 (程序中會有更多的函數,它們會單獨使用打開的文件,所以需要保持打開狀態[我知道這是一種設計程序的愚蠢方式,但這是有這些規則的作業])。 但是,如果我想在它打開的同一函數main關閉程序,但不在同一個地方,它會給我一個錯誤消息fclose(fr)-fr is not unidentified unidentified 任何人都可以幫助我嗎?

這是我的代碼:

int main()
{
    char c;
    while(1){
        scanf("%c",&c);
        if(c == 'v'){
            FILE *fr;
            fr = fopen("D:\\Programming\\C\\Projekt\\Projekt 1\\pacienti.txt","r");            
            v();
        }
        else if(c == 'k'){
            fclose(fr);
            return 0;
        }
    }
}

(fclose(fr)-fr 不是身份不明的

您的代碼無法編譯,因為

fclose(fr);

使用未知變量fr

為了能夠關閉之前打開的文件,您需要移動FILE *fr; while循環之前,允許它在if的兩個分支中可用。

我還鼓勵您使用NULL初始化該變量,以避免在輸入k之前使用輸入v 時出現未定義的行為。 一個正確的方法是在調用fclose之前測試它是否為NULL ,並在關閉文件后將其設置為NULL

無論如何fr只是郵件內部的,打開文件似乎沒用, v函數在做什么?

其中很可能你想更換

scanf("%c",&c);

經過

scanf(" %c",&c);

繞過空格,包括換行符,或者更好地檢查scanf返回 1 以管理 EOF 情況,例如,如果stdin重定向到文件。

請注意,如果輸入不帶k 的連續v ,您可以多次打開文件而不關閉它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM