2011-11-16 174 views
0

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

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

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

回答

1

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

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

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++; 
} 
+0

但是原始海报不想改变他的源代码。 –

+0

@BasileStarynkevitch我不认为这是可能的。 – cnicutar