有没有办法为fopen()设置一个搜索路径,这样当我输入文件名时,它会搜索这个文件的路径?fopen()搜索路径
f=fopen("xxx","r");
我只想让xxx不在当前目录中,我不想更改源代码。
有没有办法为fopen()设置一个搜索路径,这样当我输入文件名时,它会搜索这个文件的路径?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++;
}
但是原始海报不想改变他的源代码。 –
@BasileStarynkevitch我不认为这是可能的。 – cnicutar