通过环境变量调用程序的情况下,如何用相对路径打开文件?
在C语言中,我用fopen()
函数能通过相对路径打开文件
比如
//假设我当前目录有个文件叫 1.txt
FILE *fp = fopen("1.txt","r");
if( fp != NULL ){
//一番操作...
}else{
//报错
}
fclose(fp);
然后我在设置了环境变量的path
后,把这个程序编译好,连同这个1.txt
都放到那个设置好的路径下。
这时候,我在命令行终端的任何地方输入这个可执行程序的名字都能运行它了,可是它并不能正确的打开通过相对路径形式定义的这个文件。
所以,请问要通过怎样的方式才能达到这个目的(通过相对路径形式打开文件,并且能在通过设置环境变量后在任何地方通过相对路径形式打开文件)呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不知道你是什么操作系统
如果是 BSD 的话,realpath 应该可以满足需求的;
如果是 Linux 的话,可以使用全局变量
extern char *program_invocation_name
来获取;当然也可以读取 /proc/[pid]/exe 的链接指向来获取在windows下用
GetModuleFileName
可以获得程序的绝对路径。搜索
PATH
环境变量找可执行程序是shell和系统帮你干的,但是非可执行文件呢,没人帮你干这个活儿,你得自己来。所以剩下的就是,要么你拼接出文件的绝对路径,要么你自己获取
PATH
然后自己挨个儿搜索。比较下,你肯定拼接路径吧。