Condividi tramite


_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_dbge _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