指针不是我在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;
}
谢谢你们
答案 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*
对象。有几个不同的选择,这些是最明显的选择:
fr
,然后将其传递给A()
和B()
fr
设为全局变量,在A()
中打开它(确保不要关闭它!),在B()中使用它。 我更喜欢选项1.使用全局变量会使代码的可读性降低。
另请注意,您的代码允许在A之前调用B(),它会在打开文件之前尝试使用该文件。假设您没有实现选项1,您的代码将需要确保不会发生这种情况(或者以某种方式处理它)。
绝对没有办法在A中打开和关闭文件,然后在B中使用。