繁体   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