C语言中怎么定义一个FILE文件变量其他函数也能使用

如题所述

不能用全局变量的话,只能用指针传递.以下是例子.
首先要在工程目录下建立文件g.dat

#include <stdio.h>
void fun1(FILE *p)
{
fwrite("11",2,2,p);
}
void fun2(FILE *p)
{
fwrite("22",2,2,p);
}
int main()
{
FILE *p1 = NULL;
p1 = fopen("g.dat","rw");
fun1(p1);
fun2(p1);
fclose(p1);
return 0;
}追问

这个可以。。。
但我的怎么错了呢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-27
貌似只有这两种方法吧,你做错了?追问

可以运行就是运行结果。。。错了
有FILE文件指针传递的案例没??

追答

应该有的,我知道的虽然不是指针,但也和指针差不多,在C++中叫句柄,传递句柄作参数的函数很多啊

第2个回答  2012-08-27
全局变量 或者 指针传递追问

前提不能使用全局变量。。。
我们做课设。。。老师说不能使用全局变量
我用全局变量很完美,但是用指针传递时出错了。。。

追答

那一定是你写错了
贴点代码吧

追问

/* open_hzk */
void open_hzk(FILE *hzk_p) //自定义的一个打开汉字库的函数。。。参数是FILE *hzk_p
{
hzk_p = fopen("C:\\TC30\\BIN\\HZK\\HZK16", "rb"); //汉字库文件在路径C:\TC30\BIN\HZK,使用的16*16的点阵字库
if (hzk_p == NULL)
{
printf("Can't open FILE hzk16! Press any to continue...\n");
getch();
exit(1); //回到主函数
}
}
在主函数中调用这个函数的语句是

open(hzk_p);

追答

FILE* hzk_p;

open_hzk(&hzk_p);

void open_hzk(FILE** hzk_p);

exit(1); //回到主函数
exit() 通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。

追问

void open_hzk(FILE **hzk_p);

hzk_p = fopen(...);

出现错误。。。

cannot convert ‘FILE *’ to 'FILE **'

追答

*hzk_p = fopen(...);

不会要我全写好吧。。。

本回答被提问者采纳
相似回答