Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

Zpracování souborů

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp