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