2014-12-02 20 views
6

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?

+3

Co jeśli dwa pliki o tej samej nazwie w innym miejscu? – Himanshu

+0

Czy masz nazwę pliku lub wskaźnik pliku? – nikhilr57

+2

to samo co: http://stackoverflow.com/questions/1661982/how-do-i-get-the-full-path-for-a-filename-command-line-argument – Neska

Odpowiedz

11

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); 
+0

Nie ma uniwersalnego rozwiązania? – Pedro77

+1

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

Powiązane problemy