C中的相对路径

时间:2012-09-18 16:54:08

标签: c relative-path

我有一个C程序,它使用与可执行文件位于同一目录中的一些资源。当我从随机工作目录(而不是程序所在的目录)执行程序时,资源不会加载,因为我在代码中使用的相对路径不是可执行文件所在的路径。我怎么能很好地解决这个问题?

1 个答案:

答案 0 :(得分:0)

对于今后发生在这个老问题上的任何人,就像我刚刚做的那样:

该程序(至少在linux中)将它被调用的命令保留为int main参数列表的第一个参数。

e.g。 在这个例子中,我们将深入了解几个目录以进入我们的程序,从而产生以下调用命令user@PC:~$ ./foo/bar/awesome_program.x86_64。 该程序(下面的代码)将打印./foo/bar/awesome_program.x86_64 由于我们将该字符串作为变量,因此从它构造相对路径应该相当简单,只用相对于可执行文件的路径替换该字符串的结尾。

工作代码:

#include <stdio.h>

int main (int argc, char **argv)
{
    printf("calling path: %s\n", argv[0]);

    return 0;
}