通过环境变量调用程序的情况下,如何用相对路径打开文件?

发布于 2022-09-06 11:20:10 字数 445 浏览 16 评论 0

在C语言中,我用fopen()函数能通过相对路径打开文件
比如

//假设我当前目录有个文件叫 1.txt

FILE *fp = fopen("1.txt","r");

if( fp != NULL ){
    //一番操作...
}else{
    //报错
}

fclose(fp);

然后我在设置了环境变量的path后,把这个程序编译好,连同这个1.txt都放到那个设置好的路径下。

这时候,我在命令行终端的任何地方输入这个可执行程序的名字都能运行它了,可是它并不能正确的打开通过相对路径形式定义的这个文件。

所以,请问要通过怎样的方式才能达到这个目的(通过相对路径形式打开文件,并且能在通过设置环境变量后在任何地方通过相对路径形式打开文件)呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情场扛把子 2022-09-13 11:20:10

不知道你是什么操作系统

如果是 BSD 的话,realpath 应该可以满足需求的;
如果是 Linux 的话,可以使用全局变量 extern char *program_invocation_name 来获取;当然也可以读取 /proc/[pid]/exe 的链接指向来获取

浮萍、无处依 2022-09-13 11:20:10

在windows下用 GetModuleFileName 可以获得程序的绝对路径。

搜索PATH环境变量找可执行程序是shell和系统帮你干的,但是非可执行文件呢,没人帮你干这个活儿,你得自己来。
所以剩下的就是,要么你拼接出文件的绝对路径,要么你自己获取PATH然后自己挨个儿搜索。比较下,你肯定拼接路径吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文