Получить полный путь к файлам в C

В основном этот кусок кода дает мне имена файлов в каталоге …. Но мне нужно получить их пути вместо этого. Я попытался использовать функцию realpath (). Но я использую это неправильно, я думаю (я показал в коде, где я хотел его использовать). Любые идеи, как это исправить? Еще одна вещь: он дает мне только имена подкаталогов, но в основном мне нужно также получить пути к их файлам. Спасибо.

#include  #include  #include  #include  #include  int main (int c, char *v[]) { int len, n; struct dirent *pDirent; DIR *pDir; int ecode=0; struct stat dbuf; for (n=1; n<c; n++){ if (lstat(v[n], &dbuf) == -1){ perror (v[n]); ecode ++; } else if(S_ISDIR(dbuf.st_mode)){ printf("%s is a directory/n ", v[n]); } else{ printf("%s is not a directory\n", v[n]); } } if (c < 2) { printf ("Usage: testprog \n"); return 1; } pDir = opendir (v[1]); if (pDir == NULL) { printf ("Cannot open directory '%s'\n", v[1]); return 1; } while ((pDirent = readdir(pDir)) != NULL) { // here I tried to use realpath() printf ("[%s]\n", realpath(pDirent->d_name)); } closedir (pDir); return 0; } 

    Все, что вам нужно, это добавить второй аргумент в realpath, потому что ему нужен буфер для записи. Я рекомендую вам вывести строку из инструкции printf и дать ей свою собственную строку. realpath () может возвращать char *, но он не был предназначен.

     #include  //For PATH_MAX char buf[PATH_MAX + 1]; while ((pDirent = readdir(pDir)) != NULL) { realpath(pDirent->d_name, buf); printf ("[%s]\n", buf); } 

    Похоже, что в моей системе отображаются правильные пути.