在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,如下所示:
void B(FILE* const f){
,,//使用f
}
要在函数中使用文件,需要在该函数中拥有FILE*
对象。有几个不同的选择,这些是最明显的:
- 打开主
fr
,传递给A()
和B()
- 使
fr
成为全局变量,在A()
中打开它(确保不要关闭它!),在B()中使用它。
我更喜欢选项1。一般来说,使用全局变量会降低代码的可读性。
还请注意,您的代码允许在A之前调用B(), A将尝试在打开文件之前使用该文件。假设您没有实现选项1,您的代码将需要确保这种情况不会发生(或者以某种方式处理)。
绝对不可能在A中打开和关闭文件,然后在b中使用
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何将内容数组写入文本文件?
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 如何从具有移动语义的类对象中生成共享指针
- 在c代码之间共享数据的最佳方式
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 警告:共享库文本段不可共享
- 避免同时写入 NFS 共享文本文件
- 如何在Ruby和其他语言之间共享文本文件(或互斥/信号量)
- 在C语言的不同功能中共享打开的文本文件
- 共享库使用静态gnutls库具有文本重定位功能