LINUX.ORG.RU

путь к файлу


0

0

подскажите, пожалуйста, как в C определить абсолютный путь к файлу, имея относительный? есть для этого какие-то стандартные функции или придется писать самому?

★★★

#include <limits.h>
#include <unistd.h>
#include <stdio.h>

...

char cwd[PATH_MAX];
char fullpath[PATH_MAX];

...
// `path' is the relative path
getcwd(cwd, sizeof (cwd));
snprintf(fullpath, sizeof(fullpath), "%s/%s", cwd, path);

anonymous
()
Ответ на: комментарий от anonymous

насколько я понял, это работает корректно только для текущей директории. это не совсем то, что мне нужно. я искал функцию типа перловой Cwd::realpath (за исключением, разве что, ссылок), т.е. чтобы она определяла абсолютный путь к любому файлу без перехода в директорию, в которой он находится.

friday ★★★
() автор топика
Ответ на: комментарий от friday

Можно запомнить cwd, потом перейти по относительному пути (с if (strrchr(relpath,'/'))*(strrchr(relpath, '/'))=0;), посмотреть на sprintf (buf, "%s/%s", cwd, strchr(relpath,'/')?strchr(relpath,'/')+1:relpath); а потом вернуть старую cwd.

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

видимо, так и придется сделать.

friday ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.