Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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