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

sharing opened text file in different functions in C

本文关键字:共享 文本 文件 功能 语言      更新时间:2023-10-16

指针不是我在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,如下所示:

void B(FILE* const f){
 ,,//使用f
}

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

  1. 打开主fr,传递给A()B()
  2. 使fr成为全局变量,在A()中打开它(确保不要关闭它!),在B()中使用它。

我更喜欢选项1。一般来说,使用全局变量会降低代码的可读性。

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

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