Udostępnij za pośrednictwem


_splitpath_s, _wsplitpath_s

Nazwa ścieżki dzieli na składniki.Są to wersje _splitpath, _wsplitpath z ulepszeń zabezpieczeń, zgodnie z opisem w Funkcje zabezpieczeń w 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
    Pełna ścieżka.

  • [poza] drive
    Dysków z dopisanym znakiem dwukropka (:).Można przekazać NULL dla tego parametru, jeśli nie ma potrzeby literę dysku.

  • [in] driveNumberOfElements
    Rozmiar drive bufor w znaków jednobajtowych lub szerokie.Jeśli drive jest NULL, wartość ta musi mieć wartość 0.

  • [poza] dir
    Ścieżka do katalogu, w tym kreskę ułamkową odwróconą.Kreska ułamkowa ( / ), kreski ułamkowe odwrócone ( \ ), lub mogą być używane.Można przekazać NULL dla tego parametru, jeśli nie ma potrzeby ścieżkę katalogu.

  • [in] dirNumberOfElements
    Rozmiar dir bufor w znaków jednobajtowych lub szerokie.Jeśli dir jest NULL, wartość ta musi mieć wartość 0.

  • [poza] fname
    Bazowa nazwa pliku (bez rozszerzenia).Można przekazać NULL dla tego parametru, jeśli nie ma potrzeby nazwę pliku.

  • [in] nameNumberOfElements
    Rozmiar fname bufor w znaków jednobajtowych lub szerokie.Jeśli fname jest NULL, wartość ta musi mieć wartość 0.

  • [poza] ext
    Rozszerzenie nazwy pliku, w tym okresie wiodący (.).Można przekazać NULL dla tego parametru, jeśli nie ma potrzeby rozszerzenie nazwy pliku.

  • [in] extNumberOfElements
    Rozmiar ext bufor w znaków jednobajtowych lub szerokie.Jeśli ext jest NULL, wartość ta musi mieć wartość 0.

Wartość zwracana

Zero, jeśli operacja się powiedzie; w przeciwnym razie, kod błędu.

Warunki błędów

Warunek

Wartość zwrócona

path wynosi 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

Jeśli występuje którykolwiek z powyższych warunków, obsługi nieprawidłowy parametr jest wywoływany, zgodnie z opisem w Sprawdzanie poprawności parametru .Jeśli wykonanie może być kontynuowane, te funkcje ustawiają errno jako EINVAL i zwracają EINVAL.

Jeśli którykolwiek z buforów jest zbyt krótki, aby wynik, tych funkcji Wyczyść wszystkie bufory aby puste ciągi, ustaw errno do ERANGEi zwraca ERANGE.

Uwagi

_splitpath_s Funkcja dzieli ścieżkę na jego cztery elementy._splitpath_s automatycznie obsługuje argumenty ciąg znaków wielobajtowych odpowiednio, uznając sekwencje znaków wielobajtowych według strona kodowa wielobajtowych obecnie w użyciu._wsplitpath_s jest to wersja szeroko charakter _splitpath_s; argumenty _wsplitpath_ssą ciągi znaków wide.Funkcje te zachowują się identycznie inaczej

Rutynowe mapowania zwykłego tekstu

Procedura Tchar.h

_UNICODE & _MBCS nie zdefiniowano

_MBCS zdefiniowano

_UNICODE zdefiniowany

_tsplitpath_s

_splitpath_s

_splitpath_s

_wsplitpath_s

Każdy składnik Pełna ścieżka jest przechowywany w buforze oddzielne; stałe manifestu _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, i _MAX_EXT (które zdefiniowano w STDLIB.H) określ maksymalny dozwolony rozmiar dla każdego pliku składnika.Składniki pliku większe niż odpowiednie stałe manifestu spowodować uszkodzenie sterty.

Poniższa tabela zawiera listę wartości stałych manifestu.

Nazwa

Wartość

_MAX_DRIVE

3

_MAX_DIR

256

_MAX_FNAME

256

_MAX_EXT

256

Jeśli pełna ścieżka nie zawiera składników (na przykład nazwę pliku), _splitpath_s przypisuje pusty ciąg znaków do odpowiedniego buforu.

W języku C++, korzystanie z tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wydedukować długość buforu, eliminując konieczność określenia argumentu rozmiaru.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.

Wersje debugowania tych funkcji najpierw wypełniają bufor 0xFD.Aby wyłączyć to zachowanie, użyj _CrtSetDebugFillThreshold.

Wymagania

Procedura

Wymagany nagłówek

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> lub <wchar.h>

Dodatkowe informacje o zgodności – zobacz: Zgodność we Wprowadzeniu.

Przykład

Zobacz przykład _makepath_s, _wmakepath_s.

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywoływania platformy.

Zobacz też

Informacje

Obsługa plików

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp