_splitpath_s, _wsplitpath_s
Název cesty rozdělí na součásti.Jedná se o verze _splitpath, _wsplitpath s vylepšení zabezpečení, jak je popsáno v Funkce zabezpečení v CRT.
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
[in] path
Úplná cesta.[out] drive
Písmeno následované dvojtečkou (:).Můžete předat NULL pro tento parametr, pokud není nutné písmeno jednotky.[in] driveNumberOfElements
Velikost drive vyrovnávací paměti v jednobajtových nebo široké znaky.Pokud drive je NULL, tato hodnota musí být 0.[out] dir
Cesta k adresáři, včetně koncové lomítko.Lomítka ( / ), zpětná lomítka ( \ ), nebo mohou kombinovat.Můžete předat NULL pro tento parametr, pokud nepotřebujete úplnou cestu k adresáři.[in] dirNumberOfElements
Velikost dir vyrovnávací paměti v jednobajtových nebo široké znaky.Pokud dir je NULL, tato hodnota musí být 0.[out] fname
Základní název souboru (bez přípony).Můžete předat NULL pro tento parametr, pokud název souboru není nutné.[in] nameNumberOfElements
Velikost fname vyrovnávací paměti v jednobajtových nebo široké znaky.Pokud fname je NULL, tato hodnota musí být 0.[out] ext
Přípona názvu souboru, včetně úvodní období (.).Můžete předat NULL pro tento parametr, pokud nepotřebujete příponu názvu souboru.[in] extNumberOfElements
Velikost ext vyrovnávací paměti v jednobajtových nebo široké znaky.Pokud ext je NULL, tato hodnota musí být 0.
Vrácená hodnota
Nula v případě úspěchu, při selhání kód chyby.
Chybové podmínky
Podmínka |
Návratová hodnota |
---|---|
Parametr path je NULL. |
EINVAL |
driveis NULL, driveNumberOfElements is non-zero |
EINVAL |
driveis non-NULL, driveNumberOfElements is zero |
EINVAL |
diris NULL, dirNumberOfElements is non-zero |
EINVAL |
diris non-NULL, dirNumberOfElements is zero |
EINVAL |
fnameis NULL, nameNumberOfElements is non-zero |
EINVAL |
fnameis non-NULL, nameNumberOfElements is zero |
EINVAL |
extis NULL, extNumberOfElements is non-zero |
EINVAL |
extis non-NULL, extNumberOfElements is zero |
EINVAL |
Pokud dojde k některé z výše uvedených podmínek, vyvolán neplatný parametr obslužné rutiny, jak je popsáno v Ověření parametru .Pokud smí provádění pokračovat, tyto funkce nastaví errno na EINVAL a vrátí EINVAL.
Pokud některé vyrovnávací paměti je příliš krátký pro uložení výsledku, tyto funkce vymazání vyrovnávací paměti na prázdný řetězec, nastavte errno k ERANGEa vrátit se ERANGE.
Poznámky
_splitpath_s Funkce rozdělí na čtyři součásti cesty._splitpath_s automaticky zpracovává vícebajtové znakové řetězce argumenty podle potřeby, uznávajíce vícebajtové znakové sekvence podle vícebajtová znaková stránka aktuálně používán._wsplitpath_s je verze širokého znaku _splitpath_s; argumenty pro _wsplitpath_sjsou řetězci širokého znaku.Tyto funkce se chovají stejně jinak
Rutinní mapování obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definováno |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tsplitpath_s |
_splitpath_s |
_splitpath_s |
_wsplitpath_s |
Každá součást úplné cesty jsou uloženy v samostatné vyrovnávací paměti; manifest konstanty _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, a _MAX_EXT (podle STDLIB.H) zadejte maximální povolenou velikost pro každou součást souboru.Soubor větší než odpovídající manifestu konstanty způsobit poškození haldy součásti.
V následující tabulce jsou uvedeny hodnoty konstant manifestu.
Název |
Value |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Je-li úplná cesta neobsahuje součásti (například název souboru), _splitpath_s přiřadí prázdný řetězec odpovídající vyrovnávací paměti.
V jazyce C++ je použití těchto funkcí zjednodušeno díky přetížením šablony; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminují nutnost určit velikost argumentu.Další informace naleznete v tématu Přetížení zabezpečení šablony.
Ladicí verze těchto funkcí nejprve naplní vyrovnávací paměť hodnotou 0xFD.Chcete-li zakázat toto chování, použijte _CrtSetDebugFillThreshold.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_splitpath_s |
<stdlib.h> |
_wsplitpath_s |
<stdlib.h> nebo <wchar.h> |
Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.
Příklad
Viz příklad _makepath_s, _wmakepath_s.
Ekvivalent v rozhraní .NET Framework
Nelze použít. Pokud chcete volat standardní funkci jazyka C, použijte PInvoke. Další informace naleznete v tématu Příklady vyvolání platformy.