Sdílet prostřednictvím


_splitpath_s, _wsplitpath_s

Rozdělí název cesty do součástí. Tyto funkce jsou verze _splitpath, _wsplitpath s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

Syntaxe

errno_t _splitpath_s(
   const char * path,
   char * drive,
   size_t driveNumberOfElements,
   char * dir,
   size_t dirNumberOfElements,
   char * fname,
   size_t nameNumberOfElements,
   char * ext,
   size_t extNumberOfElements
);
errno_t _wsplitpath_s(
   const wchar_t * path,
   wchar_t * drive,
   size_t driveNumberOfElements,
   wchar_t *dir,
   size_t dirNumberOfElements,
   wchar_t * fname,
   size_t nameNumberOfElements,
   wchar_t * ext,
   size_t extNumberOfElements
);
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _splitpath_s(
   const char *path,
   char (&drive)[drivesize],
   char (&dir)[dirsize],
   char (&fname)[fnamesize],
   char (&ext)[extsize]
); // C++ only
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _wsplitpath_s(
   const wchar_t *path,
   wchar_t (&drive)[drivesize],
   wchar_t (&dir)[dirsize],
   wchar_t (&fname)[fnamesize],
   wchar_t (&ext)[extsize]
); // C++ only

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.

driveNumberOfElements
Velikost vyrovnávací paměti v jednobajtů nebo širokých drive znachů. Pokud drive ano NULL, tato hodnota musí být 0.

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 můžete předat NULL , pokud cestu k adresáři nepotřebujete.

dirNumberOfElements
Velikost vyrovnávací paměti v jednobajtů nebo širokých dir znachů. Pokud dir ano NULL, tato hodnota musí být 0.

fname
Základní název souboru (bez přípony). Tento parametr můžete předat NULL , pokud název souboru nepotřebujete.

nameNumberOfElements
Velikost vyrovnávací paměti v jednobajtů nebo širokých fname znachů. Pokud fname ano NULL, tato hodnota musí být 0.

ext
Přípona názvu souboru, včetně úvodní tečky (.). Tento parametr můžete předat NULL , pokud příponu názvu souboru nepotřebujete.

extNumberOfElements
Velikost vyrovnávacípamětich ext Pokud ext ano NULL, tato hodnota musí být 0.

Vrácená hodnota

Nula v případě úspěchu; kód chyby při selhání.

Chybové podmínky

Podmínka Vrácená hodnota
path je NULL EINVAL
drive is NULL, driveNumberOfElements is non-zero EINVAL
driveje ne,NULL je nula. driveNumberOfElements EINVAL
dir is NULL, dirNumberOfElements is non-zero EINVAL
dirje ne,NULL je nula. dirNumberOfElements EINVAL
fname is NULL, nameNumberOfElements is non-zero EINVAL
fnameje ne,NULL je nula. nameNumberOfElements EINVAL
ext is NULL, extNumberOfElements is non-zero EINVAL
extje ne,NULL je nula. extNumberOfElements EINVAL

Pokud dojde k některé z výše uvedených podmínek, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru . Pokud provádění může pokračovat, tyto funkce jsou nastaveny errno na EINVAL a vracet EINVAL.

Pokud je některá z vyrovnávacích pamětí příliš krátká pro uložení výsledku, tyto funkce vymažou všechny vyrovnávací paměti na prázdné řetězce, nastaví errno a ERANGEvrátí ERANGE.

Poznámky

Funkce _splitpath_s rozdělí cestu do svých čtyř komponent. _splitpath_s 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_s je verze širokého znaku _splitpath_s; argumenty, které mají _wsplitpath_s být řetězce širokého znaku. Tyto funkce se chovají stejně jinak.

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_s _splitpath_s _splitpath_s _wsplitpath_s

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í povolenou velikost pro každou komponentu souboru. Součásti souborů větší než odpovídající konstanty manifestu způsobují poškození haldy.

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_s přiřadí k odpovídající vyrovnávací paměti prázdný řetězec.

V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminuje nutnost zadat argument velikosti. Další informace naleznete v tématu Přetížení šablon zabezpečení.

Verze knihovny ladění těchto funkcí nejprve vyplní vyrovnávací paměť 0xFE. Chcete-li toto chování zakázat, použijte _CrtSetDebugFillThreshold.

Požadavky

Rutina Požadovaný hlavičkový soubor
_splitpath_s <stdlib.h>
_wsplitpath_s <stdlib.h> nebo <wchar.h>

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

Příklad

Podívejte se na příklad pro _makepath_s, _wmakepath_s.

Viz také

Zpracování souborů
_splitpath, _wsplitpath
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp