有没有办法为fopen()设置搜索路径,这样当我输入文件名时,它会在这些路径中搜索这个文件?
f=fopen("xxx","r");
我只是希望xxx不在当前目录中,我不想更改源代码。
答案 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++;
}