_splitpath
, _wsplitpath
Rozdělte cestu do komponent. Bezpečnější verze těchto funkcí jsou k dispozici, viz _splitpath_s
, _wsplitpath_s
.
Syntaxe
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
const wchar_t *path,
wchar_t *drive,
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
Parametry
path
Úplná cesta.
drive
Písmeno jednotky následované dvojtečku (:). Tento parametr můžete předat NULL
, pokud písmeno jednotky nepotřebujete.
dir
Cesta k adresáři, včetně koncového lomítka. Lomítka ( /
), zpětné lomítka ( \
) nebo obě můžou být použita. Tento parametr předejte NULL
, pokud cestu k adresáři nepotřebujete.
fname
Základní název souboru (bez přípony) Tento parametr předejte NULL
, pokud název souboru nepotřebujete.
ext
Přípona názvu souboru, včetně úvodní tečky (.
). Tento parametr předejte NULL
, pokud příponu názvu souboru nepotřebujete.
Poznámky
Funkce _splitpath
rozdělí cestu do svých čtyř komponent. _splitpath
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. _wsplitpath
je verze širokého znaku _splitpath
; argumenty, které mají _wsplitpath
být řetězce širokého znaku. Tyto funkce se chovají stejně jinak.
Poznámka zabezpečení: Tyto funkce podléhají přetečení vyrovnávací paměti. Problémy s přetečením vyrovnávací paměti jsou častou metodou útoku na systém, což vede k neoprávněnému zvýšení oprávnění. Další informace najdete v tématu Zabránění přetečení vyrovnávací paměti. K dispozici jsou bezpečnější verze těchto funkcí; viz _splitpath_s
, _wsplitpath_s
.
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.
Mapování rutin obecného textu
TCHAR.H rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Každá součást úplné cesty je uložena v samostatné vyrovnávací paměti; konstanty manifestu _MAX_DRIVE
, , _MAX_FNAME
_MAX_DIR
a _MAX_EXT
(definované v STDLIB.H
) určují maximální velikost pro každou komponentu souboru. Součásti souborů, které jsou větší než odpovídající konstanty manifestu, způsobují poškození haldy.
Každá vyrovnávací paměť musí být tak velká jako odpovídající konstanta manifestu, aby se zabránilo potenciálnímu přetečení vyrovnávací paměti.
Následující tabulka uvádí hodnoty konstant manifestu.
Jméno | Hodnota |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Pokud úplná cesta neobsahuje komponentu (například název souboru), _splitpath
přiřadí do odpovídajících vyrovnávacích pamětí prázdné řetězce.
Můžete předat NULL
_splitpath
jakýkoli jiný parametr, než path
který nepotřebujete.
Pokud path
je NULL
, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je povoleno pokračovat provádění, errno
je nastaveno na EINVAL
.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
Podívejte se na příklad pro _makepath
.
Viz také
Zpracování souborů
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s