2014-12-02 18 views
6

Si prega di aiutare non sto ottenendo come implementare una funzione che restituisce il percorso completo di tale file utilizzando C/C++?Come ottenere il percorso completo semplicemente dando il nomefile?

+3

Che cosa succede se due file con lo stesso nome in posizione diversa? – Himanshu

+0

Hai il nome del file o il puntatore del file? – nikhilr57

+2

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

risposta

11

UNIX/Linux:

#include <limits.h> 
#include <stdlib.h> 

char *full_path = realpath("foo.dat", NULL); 

... 

free(full_path); 

o:

char full_path[PATH_MAX]; 
realpath("foo.dat", full_path); 

di Windows:

#include <windows.h> 

TCHAR full_path[MAX_PATH]; 

GetFullPathName(_T("foo.dat"), MAX_PATH, full_path, NULL); 
+0

Non esiste una soluzione universale? – Pedro77

+1

In C++ 17, c'è ['std :: filesystem :: canonical'] (http://en.cppreference.com/w/cpp/filesystem/canonical). Per gli standard precedenti, è disponibile come parte della libreria ['boost :: filesystem'] (http://www.boost.org/doc/libs/1_64_0/libs/filesystem/doc/index.htm). Non penso che ci sia una funzione simile nella libreria standard C, però. – Wintermute

Problemi correlati