_fullpath, _wfullpath
Crea un assoluto o un nome di percorso completo per il percorso relativo specificato.
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 che contiene assoluto o il nome di percorso completo, o NULL.relPath
Percorso relativo.maxLength
Lunghezza massima del buffer del nome del percorso assoluto (absPath).Tale lunghezza in byte per _fullpath ma i caratteri di tipo " wide " (wchar_tper) _wfullpath.
Valore restituito
Ognuna di queste funzioni restituisce un puntatore a un buffer che contiene il nome del percorso assoluto (absPath).Se c " è un errore (ad esempio, se il valore passata in relPath include una lettera di unità non valida o non viene trovata, oppure se la lunghezza del nome del percorso assoluto creato (absPath) è maggiore di maxLength), la funzione restituisce NULL.
Note
_fullpath la funzione consente di espandere il nome di percorso relativo in relPath ai relativi completo o percorso assoluto e archivi questo nome in absPath*.* se absPath è NULL, malloc viene utilizzato per allocare un buffer di lunghezza sufficiente per utilizzare il nome del percorso.È responsabilità del chiamante liberare questo buffer.Un nome di percorso relativo specifica un percorso a un altro percorso dalla posizione corrente (ad esempio la cartella di lavoro corrente: “.").Un nome di percorso assoluto è l'espansione di un nome di percorso relativo che indica l'intero percorso di associazione per ottenere la posizione desiderata dalla radice del file system.A differenza di _makepath, _fullpath può essere utilizzato per ottenere il nome del percorso assoluto per i percorsi relativi (relPath) in cui “. /„ o “. /„ dei rispettivi nomi.
Ad esempio, per utilizzare le routine di runtime del linguaggio C, l'applicazione deve includere i file di intestazione contenenti le dichiarazioni per le routine.Ogni file di intestazione include riferimenti dell'istruzione la posizione del file in modo relativo della directory di lavoro dell'applicazione):
#include <stdlib.h>
quando il percorso assoluto (la posizione del file system) del file potrebbe essere:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
_fullpathgestisce automaticamente gli argomenti della stringa con caratteri multibyte in base alle proprie esigenze, riconoscere le sequenze di caratteri multibyte in base alla tabella codici multibyte in uso._wfullpathè una versione a caratteri estesi di _fullpath; gli argomenti di tipo stringa a _wfullpathsono le stringhe di caratteri estesi._wfullpathe _fullpathcomportano in modo identico con la differenza che _wfullpathnon gestisce le stringhe di caratteri multibyte.
se _DEBUGe _CRTDBG_MAP_ALLOCsono entrambe il definito, chiamate a _fullpath e _wfullpath vengono sostituiti dalle chiamate a _fullpath_dbg e _wfullpath_dbg per consentire le allocazioni di memoria di debug.Per ulteriori informazioni, vedere _fullpath_dbg, _wfullpath_dbg.
Questa funzione viene richiamato il gestore non valido di parametro, come descritto in Convalida dei parametrise, maxlen è minore o uguale a 0.Se l'esecuzione è consentita per continuare, set di questa funzione errno in EINVAL e restituisce NULL.
Mapping di routine a testo generico
routine di Tchar.h |
_UNICODE e _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
se absPath il buffer è NULL, _fullpath chiamate report per allocare un buffer e ignora maxLength argomento.È responsabilità di chiamanti di rilasciare questo buffer mediante libero) in base alle proprie esigenze.se relPath l'argomento specifica un'unità disco, la directory corrente di questa unità combina con il percorso.
Requisiti
Funzione |
Intestazione di associazione |
---|---|
_fullpath |
<definito> |
_wfullpath |
<definito> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
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" );
}