_fullpath
, _wfullpath
Crea un nome di percorso assoluto o completo per il nome di percorso relativo specificato.
Sintassi
char *_fullpath(
char *absPath,
const char *relPath,
size_t maxLength
);
wchar_t *_wfullpath(
wchar_t *absPath,
const wchar_t *relPath,
size_t maxLength
);
Parametri
absPath
Puntatore a un buffer contenente il nome del percorso assoluto o completo o NULL
.
relPath
Nome del percorso relativo.
maxLength
Lunghezza massima del buffer del nome del percorso assoluto (absPath
). Tale lunghezza è espressa in byte per _fullpath
ma in caratteri wide (wchar_t
) per _wfullpath
.
Valore restituito
Ognuna di queste funzioni restituisce un puntatore a un buffer contenente il nome del percorso assoluto (absPath
). Se si verifica un errore ( ad esempio, se il valore passato relPath
include una lettera di unità non valida o non è possibile trovare o se la lunghezza del nome del percorso assoluto creato (absPath
) è maggiore di maxLength
), la funzione restituisce NULL
.
Osservazioni:
La _fullpath
funzione espande il nome del percorso relativo in relPath
fino al percorso completo o assoluto e archivia questo nome in absPath
. Se absPath
è NULL
, malloc
viene usato per allocare un buffer di lunghezza sufficiente per contenere il nome del percorso. È responsabilità del chiamante liberare questo buffer. Un nome percorso relativo specifica un percorso verso un'altra posizione dal percorso corrente, ad esempio la directory di lavoro corrente: .
. Un nome di percorso assoluto è l'espansione di un nome di percorso relativo che indica il percorso intero necessario per raggiungere la posizione desiderata dalla radice del file system. A differenza di _makepath
, _fullpath
può essere usato per ottenere il nome del percorso assoluto per i percorsi relativi (relPath
) che includono ./
o ../
nei relativi nomi.
Per usare le routine di runtime C, ad esempio, l'applicazione deve includere i file di intestazione contenenti le dichiarazioni per le routine. Ogni direttiva del file #include
di intestazione fa riferimento al percorso del file in modo relativo (dalla directory di lavoro dell'applicazione):
#include <stdlib.h>
e il percorso assoluto (percorso effettivo nel file sytem) del file potrebbe essere:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
_fullpath
gestisce automaticamente gli argomenti stringa di caratteri multibyte in base alle esigenze, riconoscendo le sequenze di caratteri multibyte in base alla tabella codici multibyte attualmente in uso. _wfullpath
è una versione a caratteri wide di _fullpath
. Gli argomenti stringa per _wfullpath
sono stringhe di caratteri wide. _wfullpath
e _fullpath
si comportano in modo identico, ad eccezione del fatto che _wfullpath
non gestisce stringhe di caratteri multibyte.
Se _DEBUG
e _CRTDBG_MAP_ALLOC
sono entrambi definiti, le chiamate a _fullpath
e _wfullpath
vengono sostituite dalle chiamate a _fullpath_dbg
e _wfullpath_dbg
, per consentire di eseguire il debug delle allocazioni di memoria. Per altre informazioni, vedere _fullpath_dbg
e _wfullpath_dbg
.
Questa funzione richiama il gestore di parametri non validi, come descritto in Convalida dei parametri, se maxlen
è minore o uguale a 0. Se l'esecuzione può continuare, la funzione imposta errno
suEINVAL
e restituisce NULL
.
Mapping di routine di testo generico
Tchar.h routine |
_UNICODE and _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
Se il absPath
buffer è NULL
, _fullpath
chiama malloc
per allocare un buffer e ignora l'argomento maxLength
. È responsabilità del chiamante deallocare questo buffer (usando free
) in base alle esigenze. Se l'argomento relPath
specifica un'unità disco, la directory corrente dell'unità viene combinata con il percorso.
Requisiti
Funzione | Intestazione obbligatoria |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> oppure <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// crt_fullpath.c
// This program demonstrates how _fullpath
// creates a full path from a partial path.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <direct.h>
void PrintFullPath( char * partialPath )
{
char full[_MAX_PATH];
if( _fullpath( full, partialPath, _MAX_PATH ) != NULL )
printf( "Full path is: %s\n", full );
else
printf( "Invalid path\n" );
}
int main( void )
{
PrintFullPath( "test" );
PrintFullPath( "\\test" );
PrintFullPath( "..\\test" );
}
Full path is: C:\Documents and Settings\user\My Documents\test
Full path is: C:\test
Full path is: C:\Documents and Settings\user\test
Vedi anche
Gestione dei file
_getcwd
, _wgetcwd
_getdcwd
, _wgetdcwd
_makepath
, _wmakepath
_splitpath
, _wsplitpath