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

时间:2013-04-04 14:20:58

标签: c++ 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;
}
谢谢你们

3 个答案:

答案 0 :(得分:4)

只需将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
}

答案 1 :(得分:1)

您只需将其作为FILE指针参数传递给函数B,如下所示:

  

void B(FILE * const f){
//用f做事   
}

答案 2 :(得分:1)

要在函数中使用文件,您需要在该函数中包含FILE*对象。有几个不同的选择,这些是最明显的选择:

  1. 在main中打开fr,然后将其传递给A()B()
  2. fr设为全局变量,在A()中打开它(确保不要关闭它!),在B()中使用它。
  3. 我更喜欢选项1.使用全局变量会使代码的可读性降低。

    另请注意,您的代码允许在A之前调用B(),它会在打开文件之前尝试使用该文件。假设您没有实现选项1,您的代码将需要确保不会发生这种情况(或者以某种方式处理它)。

    绝对没有办法在A中打开和关闭文件,然后在B中使用。