[英]sharing opened text file in different functions in C
指針不是我在C語言中強大的能力。 因此,我可能需要你們的幫助:)。 我想在不同的函數中使用文本文件,但只能在A()函數中打開它。
#include<stdio.h>
#include<stdlib.h>
void B(){
// I want to work with FILE.TXT in this function without openining it here.
}
void A() {
FILE *fr;
fr = fopen("FILE.TXT","r");
fclose(fr);
}
int main() {
char c;
while(c!='*') {
c = getchar();
if(c=='A') A();
if(c=='B') B();
}
return 0;
}
感謝大伙們
只要將FILE*
作為參數傳遞給需要執行I / O的函數即可。
int main()
{
FILE *fp = fopen("FILE.TXT", "r");
// don't forget error checking
A(fp);
fclose(fp);
}
void A(FILE *fp)
{
// whatever
}
您只需將它作為FILE指針參數傳遞給函數B,如下所示:
無效B(FILE * const f){
//用f做東西
}
要在函數中使用文件,您需要在該函數中具有FILE*
對象。 有幾種不同的選擇,這些是最明顯的選擇:
fr
,並將其傳遞給A()
和B()
fr
為全局變量,在A()
打開它(確保不要關閉它!),在B()中使用它。 我更喜歡選項1。使用全局變量通常會使代碼的可讀性降低。
還要注意,您的代碼允許B()在A之前調用,這將在打開文件之前嘗試使用該文件。 假設您未實現選項1,則您的代碼將需要確保不會發生(或以某種方式處理)。
絕對不可能在A中打開和關閉文件,然后在B中使用該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.