Sdílet prostřednictvím


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