2

指针不是我在 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;
}

感谢你们

4

3 回答 3

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
}
于 2013-04-04T14:22:03.230 回答
1

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

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

于 2013-04-04T14:29:19.053 回答
1

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

  1. 在 main 中打开fr,并将其传递给A()andB()
  2. fr创建一个全局变量,在其中打开它(A()确保不要关闭它!),在 B() 中使用它。

我更喜欢选项 1。使用全局变量通常会降低代码的可读性。

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

文件绝对不可能在 A 中打开和关闭,然后在 B 中使用。

于 2013-04-04T15:27:55.470 回答