如何从FILE指针得到文件名?(假设这个指针是从别的模块传过来的)
时间:2008-07-24 16:54:23
来源:论坛整理 作者: 编辑:chinaitzhe
如何从FILE指针得到文件名?(假设这个指针是从别的模块传过来的)
网友回复:传文件名,当前模块再打开文件,别传FILE指针
网友回复:struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
_tmpfname应该是这个吧
网友回复:嘿嘿,试试就知道了
网友回复:查查这个
GetModuleFileName
网友回复:二楼的说法是正道
网友回复:
...
FILE结构里的3个指针都没用到(==NULL)
网友回复:
比如需要在多个模块之间传播一个文件,可以在一个统一的地方打开和关闭,之后一直传递FILE *,有点像设计模式中说的职责链模式.假如每个模块都分别打开文件在关闭文件,很难受啊.其中一个模块需要文件名.
网友回复:那就多传一个参数吧,我没找到从传来的FILE*指针里得出文件名的办法
网友回复:
我也没发现FILE*能得到文件名
CFile之类倒是有的
网友回复:
网友回复:
不是这个,这个是调了tmpfile才会有.
网友回复:
同意,或者假如很通用,就再封装一个类似CFile的对象来传递
网友回复:
这样的话,我想是否可以在打开和关闭文件的“统一的地方”再定义一个获取文件名的函数已供其他模块调用。
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
char* getFileName()
{
return &fileName;
}
在open的时候,调用一个
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
void setFileName(char* tmpFileName)
{
*fileName = tmpFileName;
}
这样耦合性还不错的。
文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面