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