Proszę mi pomóc, nie mam pojęcia, jak zaimplementować funkcję, która zwraca pełną ścieżkę tego pliku za pomocą C/C++?Jak uzyskać pełną ścieżkę, podając nazwę pliku?
Odpowiedz
UNIX/Linux:
#include <limits.h>
#include <stdlib.h>
char *full_path = realpath("foo.dat", NULL);
...
free(full_path);
czyli
char full_path[PATH_MAX];
realpath("foo.dat", full_path);
Windows:
#include <windows.h>
TCHAR full_path[MAX_PATH];
GetFullPathName(_T("foo.dat"), MAX_PATH, full_path, NULL);
Nie ma uniwersalnego rozwiązania? – Pedro77
W C++ 17 istnieje ['std :: filesystem :: canonical'] (http://en.cppreference.com/w/cpp/filesystem/canonical). W przypadku starszych standardów jest on dostępny w ramach biblioteki ['boost :: filesystem'] (http://www.boost.org/doc/libs/1_64_0/libs/filesystem/doc/index.htm). Nie sądzę jednak, by istniała podobna funkcja w standardowej bibliotece C. – Wintermute
Co jeśli dwa pliki o tej samej nazwie w innym miejscu? – Himanshu
Czy masz nazwę pliku lub wskaźnik pliku? – nikhilr57
to samo co: http://stackoverflow.com/questions/1661982/how-do-i-get-the-full-path-for-a-filename-command-line-argument – Neska