2011-11-16 109 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