Udostępnij za pośrednictwem


_splitpath_s, _wsplitpath_s

Dzieli nazwa ścieżki na składniki.Są to wersje _splitpath, _wsplitpath z rozszerzeń zabezpieczeń opisane 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

  • [w]path
    Pełna ścieżka.

  • [out]drive
    Drive litera, po której następuje dwukropek (:).Można przekazać NULL dla tego parametru, jeśli nie potrzebujesz literę dysku.

  • [w]driveNumberOfElements
    Rozmiar drive bufor znaków jednobajtowych lub rozległej.Jeśli drive jest NULL, wartość ta musi być równy 0.

  • [out]dir
    Ścieżka katalogu, w tym kreskę ułamkową odwróconą.Przesyła ukośniki ( / ), ukośników odwrotnych ( \ ), lub mogą być używane.Można przekazać NULL dla tego parametru, jeśli nie potrzebujesz ścieżki katalogu.

  • [w]dirNumberOfElements
    Rozmiar dir bufor znaków jednobajtowych lub rozległej.Jeśli dir jest NULL, wartość ta musi być równy 0.

  • [out]fname
    Nazwa podstawowego pliku (bez rozszerzenia).Można przekazać NULL dla tego parametru, jeśli nie potrzebujesz nazwę pliku.

  • [w]nameNumberOfElements
    Rozmiar fname bufor znaków jednobajtowych lub rozległej.Jeśli fname jest NULL, wartość ta musi być równy 0.

  • [out]ext
    Rozszerzenie nazwy pliku, łącznie z okresu prowadzące (.).Można przekazać NULL dla tego parametru, jeśli nie potrzebujesz rozszerzenie nazwy pliku.

  • [w]extNumberOfElements
    Rozmiar ext bufor znaków jednobajtowych lub rozległej.Jeśli ext jest NULL, wartość ta musi być równy 0.

Wartość zwracana

Zero, jeśli kończy się pomyślnie; Kod błędu w przypadku awarii.

Warunki błędów

Warunek

Zwracanie wartości

pathjest 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, nieprawidłowy parametr wywoływana jest funkcja obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru .Jeśli wykonanie może kontynuować, ustaw te funkcje errno do EINVAL i zwraca EINVAL.

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

Uwagi

_splitpath_s Funkcja dzieli ścieżkę, na jego cztery składniki._splitpath_s automatycznie obsługuje argumentów łańcuch znaków wielobajtowych, odpowiednio, uznając sekwencje znaków wielobajtowych, zgodnie z obecnie używanej strony kodowej wielobajtowych._wsplitpath_s jest to wersja szerokich znaków _splitpath_s; argumenty do _wsplitpath_ssą ciągami szerokich znaków.Te funkcje działają identycznie w przeciwnym razie

Tekst rodzajowy rutynowych mapowania

TCHAR.Rutynowe H

_UNICODE & Nie zdefiniowano _MBCS

_MBCS, definicja

_UNICODE, definicja

_tsplitpath_s

_splitpath_s

_splitpath_s

_wsplitpath_s

Każdy składnik Pełna ścieżka jest przechowywany w oddzielnych buforu; stałe manifestu _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, i _MAX_EXT (zdefiniowaną w STDLIB.H) określić maksymalny dozwolony rozmiar dla każdego składnika pliku.Składniki pliku większych niż odpowiadające im stałe manifestu spowodować uszkodzenie sterty.

Poniższa lista zawiera 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 zawiera składnik (na przykład nazwa pliku), _splitpath_s przypisuje pusty ciąg znaków odpowiadający mu bufor.

W języku C++ korzystając z tych funkcji jest uproszczona poprzez overloads szablonu; overloads można wywnioskować strony długość buforu automatycznie, eliminując konieczność należy określić argument rozmiar.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.

Wersje do debugowania te funkcje najpierw wypełnić bufor z 0xFD.Aby wyłączyć to zachowanie, należy użyć _CrtSetDebugFillThreshold.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> lub <wchar.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

Zobacz przykład dla _makepath_s, _wmakepath_s.

Odpowiednik w programie .NET Framework

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

Zobacz też

Informacje

Obsługa plików

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp