Sdílet prostřednictvím


_splitpath_s _wsplitpath_s

Název cesty rozdělí na součásti.Tyto verze jsou _splitpath, _wsplitpath s vylepšení zabezpečení popsaným 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

  • [v]path
    Úplná cesta.

  • [výstup]drive
    Jednotka písmeno následované dvojtečkou (:).Můžete předat NULL pro tento parametr, pokud je nutné písmeno jednotky.

  • [v]driveNumberOfElements
    Velikost drive znaků na jednobajtové nebo široké vyrovnávací paměť.Pokud drive je NULL, tato hodnota musí být 0.

  • [výstup]dir
    Cesta k adresáři, včetně koncové lomítko.Předat lomítka ( / ), zpětná lomítka ( \ ), nebo obě použít.Můžete předat NULL pro tento parametr, pokud není nutné cestu k adresáři.

  • [v]dirNumberOfElements
    Velikost dir znaků na jednobajtové nebo široké vyrovnávací paměť.Pokud dir je NULL, tato hodnota musí být 0.

  • [výstup]fname
    Základní název souboru (bez přípony).Můžete předat NULL pro tento parametr, pokud není nutné název souboru.

  • [v]nameNumberOfElements
    Velikost fname znaků na jednobajtové nebo široké vyrovnávací paměť.Pokud fname je NULL, tato hodnota musí být 0.

  • [výstup]ext
    Přípona názvu souboru, včetně úvodní období (.).Můžete předat NULL pro tento parametr, pokud není nutné příponu názvu souboru.

  • [v]extNumberOfElements
    Velikost ext znaků na jednobajtové nebo široké vyrovnávací paměť.Pokud ext je NULL, tato hodnota musí být 0.

Vrácená hodnota

Nula, pokud je úspěšná. Kód chyby při selhání.

Chybové podmínky

Podmínka

Vrácená hodnota

pathje 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, je vyvolána neplatný parametr popisovače, jak je popsáno v Ověření parametrů .Pokud je povoleno spuštění pokračovat, nastavit tyto funkce errno na EINVAL a vrátit se EINVAL.

Pokud některé vyrovnávací paměti je příliš krátký držet výsledek, tyto funkce vymazat vyrovnávací paměti na prázdný řetězec, nastavte errno na ERANGEa ERANGE.

Poznámky

_splitpath_s Funkce rozdělí na čtyři součásti cesty._splitpath_s automaticky zpracovává argumenty řetězec vícebajtových znaků podle potřeby UZNÁVAJÍCE vícebajtové znakové sekvence podle vícebajtové znakové stránky právě používán._wsplitpath_s je verze celého znaku _splitpath_s; argumenty _wsplitpath_sjsou celý znak řetězce.Tyto funkce chovat stejně jinak

Obecný Text rutinní mapování

TCHAR.Rutina H

_UNICODE & _MBCS není definován

_MBCS, definice

_UNICODE, definice

_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 (definováno v 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 konstanty manifestu.

Název

Value

_MAX_DRIVE

3

_MAX_DIR

256

_MAX_FNAME

256

_MAX_EXT

256

Pokud je úplná cesta neobsahuje součásti (například soubor), _splitpath_s přiřadí prázdný řetězec odpovídající vyrovnávací paměti.

V jazyce C++ použití těchto funkcí je zjednodušeno díky šablony přetížení; přetížení lze odvodit vyrovnávací paměti automaticky, není tedy třeba zadat argument velikost.Další informace naleznete v tématu Přetížení šablony zabezpečení.

Ladicí verze tyto funkce nejprve vyplnit vyrovnávací paměti s 0xFD.Toto chování lze zakázat pomocí _CrtSetDebugFillThreshold.

Požadavky

Rutina

Požadované záhlaví

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> nebo <wchar.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

Příklad

Viz příklad pro _makepath_s _wmakepath_s.

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

Zpracování souborů

_splitpath _wsplitpath

_fullpath _wfullpath

_getmbcp

_makepath _wmakepath

_setmbcp