Sdílet prostřednictvím


_fullpath, _wfullpath

Vytvoří absolutní nebo úplný název cesty pro zadaný relativní název cesty.

Syntaxe

char *_fullpath(
   char *absPath,
   const char *relPath,
   size_t maxLength
);
wchar_t *_wfullpath(
   wchar_t *absPath,
   const wchar_t *relPath,
   size_t maxLength
);

Parametry

absPath
Ukazatel na vyrovnávací paměť obsahující absolutní nebo úplný název cesty nebo NULL.

relPath
Relativní název cesty

maxLength
Maximální délka vyrovnávací paměti názvu absolutní cesty (absPath). Tato délka je v bajtech pro _fullpath , ale v širokých znacích (wchar_t) pro _wfullpath.

Vrácená hodnota

Každá z těchto funkcí vrátí ukazatel na vyrovnávací paměť obsahující absolutní název cesty (absPath). Pokud dojde k chybě (například pokud předaná relPath hodnota obsahuje písmeno jednotky, které není platné nebo nelze najít, nebo pokud je délka vytvořené absolutní cestyabsPath větší než maxLength), vrátí NULLfunkce .

Poznámky

Funkce _fullpath rozbalí relativní název relPath cesty na jeho plně kvalifikovanou nebo absolutní cestu a uloží tento název do absPath. Pokud absPath je NULL, malloc slouží k přidělení vyrovnávací paměti s dostatečnou délkou pro uložení názvu cesty. Je zodpovědností volajícího uvolnit tuto vyrovnávací paměť. Relativní název cesty určuje cestu k jinému umístění z aktuálního umístění (například aktuální pracovní adresář: .). Absolutní název cesty je rozšíření relativního názvu cesty, který uvádí celou cestu potřebnou k dosažení požadovaného umístění z kořenového adresáře systému souborů. Na rozdíl od _makepath, _fullpath lze použít k získání absolutního názvu cesty pro relativní cesty (relPath), které obsahují ./ nebo ../ v jejich názvech.

Pokud například chcete použít rutiny za běhu jazyka C, musí aplikace obsahovat soubory hlaviček, které obsahují deklarace pro rutiny. Každá direktiva souboru #include hlaviček odkazuje na umístění souboru relativním způsobem (z pracovního adresáře aplikace):

#include <stdlib.h>

pokud absolutní cesta (skutečné umístění systému souborů) souboru může být:

\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

_fullpath automaticky zpracovává vícebajtové řetězcové argumenty podle potřeby a rozpoznává sekvence vícebajtových znaků podle aktuálně používané znakové stránky s vícebajty. _wfullpath je verze širokého znaku _fullpath; řetězcové argumenty, které mají _wfullpath být řetězce širokého znaku. _wfullpath a _fullpath chovat se identicky s tím rozdílem, že _wfullpath nezpracovává vícebajtové řetězce.

Pokud _DEBUG jsou definovány a _CRTDBG_MAP_ALLOC jsou definovány, volání a _fullpath_wfullpath jsou nahrazena voláními _fullpath_dbg a _wfullpath_dbg, aby bylo možné ladit přidělení paměti. Další informace naleznete v tématu _fullpath_dbg, _wfullpath_dbg.

Tato funkce vyvolá neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru, pokud maxlen je menší nebo rovna 0. Pokud je spuštění povoleno pokračovat, tato funkce nastaví errnoEINVAL a vrátí NULL.

Mapování rutin obecného textu

Tchar.h Rutinní _UNICODE and _MBCS není definováno _MBCS Definovány _UNICODE Definovány
_tfullpath _fullpath _fullpath _wfullpath

Pokud je absPathNULLvyrovnávací paměť , _fullpath volání malloc přidělení vyrovnávací paměti a ignoruje maxLength argument. Je zodpovědností volajícího uvolnit tuto vyrovnávací paměť (pomocí free) podle potřeby. relPath Pokud argument určuje diskovou jednotku, aktuální adresář této jednotky se zkombinuje s cestou.

Požadavky

Function Požadovaný hlavičkový soubor
_fullpath <stdlib.h>
_wfullpath <stdlib.h> nebo <wchar.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// 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

Viz také

Zpracování souborů
_getcwd, _wgetcwd
_getdcwd, _wgetdcwd
_makepath, _wmakepath
_splitpath, _wsplitpath