fopen () пути поиска - PullRequest
       24

fopen () пути поиска

0 голосов
/ 16 ноября 2011

Есть ли способ задать путь поиска для fopen (), чтобы, когда я просто ввожу имя файла, он искал эти пути для этого файла?

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

Я просто хочу, чтобы ххх не было в текущем каталоге, и я не хочу менять исходный код.

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Нет, 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++;
}
1 голос
/ 16 ноября 2011

Нет, вы должны сами это кодировать. Если по какой-либо причине вы не можете изменить код, вы можете изменить свою файловую систему, например, в Linux используйте символические ссылки, bind монтирует, FUSE и т. д.

Вы можете переопределить fopen для своих нужд (но я рекомендую не делать этого); в Linux вы можете даже сделать его «прозрачным» с помощью грязных LD_PRELOAD трюков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...