打开特定位置的文件的问题

coffeeisyj 2010-06-09 09:12:25
我有一个.bin文件,想要在.exe运行的时候将它打开,开始我是把.bin文件跟.exe文件放在一起,程序可以运行,但是把.exe拿到别的地方就打不开.bin文件了。
我现在只知道可以使用getmoduledirectory方法来打开,但是具体的还不知道怎么写,请各位大侠帮帮忙~谢谢!

下面是我以前的代码:
unsigned char * Wrapper::ReadAFile( char *strName, int *piLen)
{
FILE *pF;
unsigned char *pch;

*piLen = 0;
pF =fopen( "a.bin", "rb");
if( pF == NULL )
return NULL;
fseek( pF, 0, SEEK_END );
*piLen = ftell( pF );
pch = (unsigned char*)malloc( *piLen );
fseek( pF, 0, SEEK_SET);
fread( pch, 1, *piLen, pF );
fclose( pF );

return pch;
}
...全文
114 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
coffeeisyj 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 pgplay 的回复:]
C/C++ code
//假设程序路径为C:\test\test.exe
//bin文件路径为C:\test\bin\test.bin

#include <stdio.h>
#include <string.h>
#include <windows.h>

......

unsigned char * Wrapper::ReadAFile(char *strName, in……
[/Quote]


谢谢!对我很有用~
耍宝王 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lthyxy 的回复:]

GetModuleFileName
这个是什么?
~~
[/Quote]
http://msdn.microsoft.com/en-us/library/ms683197%28VS.85%29.aspx
http://baike.baidu.com/view/1285912.htm
获取一个已装载模板的完整路径名称
liutengfeigo 2010-06-09
  • 打赏
  • 举报
回复
GetModuleFileName
这个是什么?
~~
耍宝王 2010-06-09
  • 打赏
  • 举报
回复
//假设程序路径为C:\test\test.exe
//bin文件路径为C:\test\bin\test.bin

#include <stdio.h>
#include <string.h>
#include <windows.h>

......

unsigned char * Wrapper::ReadAFile(char *strName, int *piLen)
{
char filePath[MAX_PATH];
GetModuleFileName(0, filePath, MAX_PATH);
//此时filePath为:C:\test\test.exe

strcpy(strrchr(filePath, '\\') + 1, "bin\\test.bin");
//用strrchr找到最后一个 \ 的位置,然后用strcpy在其后面拼接bin文件路径

FILE pF =fopen(filePath, "rb");

......

}
coffeeisyj 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhaogengzi 的回复:]
给你一个思路行吗?

将*.bin文件和你的程序打包后在一起.

调用一个函数得到当前程序运行路径,再和*.bin进行拼接
你看这样行吗/?试试
[/Quote]

不可以这么做呀,哎~~~
coffeeisyj 2010-06-09
  • 打赏
  • 举报
回复
但是要求使用GetModuleFileName啊~
子庚 2010-06-09
  • 打赏
  • 举报
回复
给你一个思路行吗?

将*.bin文件和你的程序打包后在一起.

调用一个函数得到当前程序运行路径,再和*.bin进行拼接
你看这样行吗/?试试
lqbk2 2010-06-09
  • 打赏
  • 举报
回复
上帝只救那些能自救的人……
coffeeisyj 2010-06-09
  • 打赏
  • 举报
回复
哪位大侠帮帮忙啊!!!~55555555555555~
liao05050075 2010-06-09
  • 打赏
  • 举报
回复
pF =fopen( path, "rb");
这个path你可以自己决定。也就是,你可以写上一个绝对的路径在path那个位置。
pF =fopen( "C:\\windows\temp\a.bin", "rb");
这个是打开C盘windows目录下的a.bin文件

不写绝对路径的话,那就是默认是当前目录
pF =fopen( "a.bin", "rb");
这个是打开当前目录下的a.bin,也就是你的exe和a.bin要在同一目录
pF =fopen( "..\\a.bin", "rb");
这个是打开当前目录的上一级目录中的a.bin,其中..表示上一级目录
coffeeisyj 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liao05050075 的回复:]
pF =fopen( "C:\\a.bin", "rb");
fopen是可以指定路径的
[/Quote]

我是必须要用到绝对路径呀,帮帮忙吧。。。
yunyun1886358 2010-06-09
  • 打赏
  • 举报
回复
做不到的,你把文件放在其他位置程序就找不到了,只能放在程序中指定的位置。要么提供界面,让用户去选。
icansaymyabc 2010-06-09
  • 打赏
  • 举报
回复
太简单了,1楼搞定
liao05050075 2010-06-09
  • 打赏
  • 举报
回复
pF =fopen( "C:\\a.bin", "rb");
fopen是可以指定路径的

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧