有没有办法为 fopen() 设置搜索路径,以便当我输入文件名时,它会在这些路径中搜索该文件?
f=fopen("xxx","r");
我只是想让xxx不在当前目录下,我不想更改源代码。
有没有办法为 fopen() 设置搜索路径,以便当我输入文件名时,它会在这些路径中搜索该文件?
f=fopen("xxx","r");
我只是想让xxx不在当前目录下,我不想更改源代码。
不,您必须自己编写代码。如果出于任何原因您无法更改代码,您可以更改文件系统,例如在 Linux 上使用符号链接、bind
挂载、FUSE等。
您可以fopen
根据需要重新定义(但我建议不要这样做);在 Linux 上,您甚至可以使用肮脏的LD_PRELOAD技巧使其“透明” 。
不,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++;
}