0

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

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

我只是想让xxx不在当前目录下,我不想更改源代码。

4

2 回答 2

1

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

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

于 2011-11-16T05:55:38.637 回答
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++;
}
于 2011-11-16T05:55:46.577 回答