有沒有辦法爲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