[英]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.