簡體   English   中英

在C中以不同的功能共享打開的文本文件

[英]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*對象。 有幾種不同的選擇,這些是最明顯的選擇:

  1. 在main中打開fr ,並將其傳遞給A()B()
  2. fr為全局變量,在A()打開它(確保不要關閉它!),在B()中使用它。

我更喜歡選項1。使用全局變量通常會使代碼的可讀性降低。

還要注意,您的代碼允許B()在A之前調用,這將在打開文件之前嘗試使用該文件。 假設您未實現選項1,則您的代碼將需要確保不會發生(或以某種方式處理)。

絕對不可能在A中打開和關閉文件,然后在B中使用該文件。

暫無
暫無

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

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