_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í NULL
funkce .
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í errno
EINVAL
a vrátí NULL
.
Mapování rutin obecného textu
Tchar.h rutina |
_UNICODE and _MBCS není definováno |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
Pokud je absPath
NULL
vyrovná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