_fullpath, _wfullpath
Crea un nome di percorso assoluto o 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 ad 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 che contiene il nome del percorso assoluto (absPath). Se è presente un errore (ad esempio, se il valore passato in relPath include una lettera di unità non valida o che non può essere trovata, oppure se la lunghezza del nome del percorso assoluto creato (absPath) è maggiore di maxLength), la funzione restituisce NULL.
Note
La funzione _fullpath espande il nome del percorso relativo in relPath al relativo percorso completo o assoluto e archivia il nome in absPath*.* Se absPath è NULL, malloc viene utilizzato per allocare un buffer di lunghezza sufficiente per mantenere il nome del percorso. È responsabilità del chiamante liberare questo buffer. Un percorso relativo specifica un percorso a un altra posizione dalla posizione corrente (ad esempio la cartella di lavoro corrente: "."). Un nome di percorso assoluto è l'espansione di un percorso relativo che indica l'intero percorso necessario per raggiungere 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) che includono ". /" o "../" nei 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 istruzione di inclusione dei file di intestazione fa riferimento alla posizione del file in modo relativo (dalla directory di lavoro dell'applicazione):
#include <stdlib.h>
mentre il percorso assoluto (posizione effettiva nel file system) del file potrebbe essere:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
La funzione _fullpath gestisce automaticamente gli handle della stringa con caratteri multibyte in base alle proprie 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 a caratteri wide. _wfullpath e _fullpath si comportano in modo identico tranne per il fatto che _wfullpath non gestisce le stringhe di caratteri multibyte.
Se _DEBUG e _CRTDBG_MAP_ALLOC sono entrambi definiti, le chiamate di _fullpath e _wfullpath vengono sostituite con le chiamate di _fullpath_dbg e _wfullpath_dbg per consentire il debug delle allocazioni di memoria. Per ulteriori informazioni, vedere _fullpath_dbg, _wfullpath_dbg.
Questa funzione invoca un handler per 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 e imposta EINVAL su NULL.
Mapping di routine di testo generico
Routine Tchar.h |
_UNICODE e _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
Se il buffer absPath è NULL, _fullpath chiama malloc per allocare un buffer e ignora l'argomento maxLength. È responsabilità del chiamante rilasciare questo buffer (utilizzando free) in modo appropriato. Se l'argomento di relPath specifica un'unità disco, la directory corrente di questa unità viene combinata al percorso.
Requisiti
Funzione |
Intestazione obbligatoria |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> 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" );
}