fopen()搜索路径

时间:2011-11-16 05:53:36

标签: c fopen search-path

有没有办法为fopen()设置搜索路径,这样当我输入文件名时,它会在这些路径中搜索这个文件?

f=fopen("xxx","r");

我只是希望xxx不在当前目录中,我不想更改源代码。

2 个答案:

答案 0 :(得分:1)

不,你必须自己编码。如果由于任何原因您无法更改代码,则可以更改文件系统,例如在Linux上使用符号链接,bind安装,FUSE等。

您可以根据自己的需要重新定义fopen(但我建议不要这样做);在Linux上,您甚至可以使用脏LD_PRELOAD技巧使其“透明”。

答案 1 :(得分:1)

不,fopen只查看当前目录,你不能给它一个目录列表。但是如果你想让它搜索一个路径列表:

char *paths[] = {
    ".",
    "/etc",
    "/usr/local",
    NULL
};

FILE *fp = NULL;
char path[ENOUGH];

while (!fp && paths[i]) {
    sprintf(path, "%s/%s", paths[i], name);
    fp = fopen(path, "r");

    i++;
}