_splitpath
, _wsplitpath
Podziel ścieżkę na składniki. Aby uzyskać bardziej bezpieczne wersje tych funkcji, zobacz _splitpath_s
_wsplitpath_s
, .
Składnia
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
const wchar_t *path,
wchar_t *drive,
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
Parametry
path
Pełna ścieżka.
drive
Litera dysku, po której następuje dwukropek (:). Możesz przekazać NULL
ten parametr, jeśli nie potrzebujesz litery dysku.
dir
Ścieżka katalogu, w tym ukośnik końcowy. Ukośniki do przodu ( /
), ukośniki odwrotne ( \
) lub oba mogą być używane. Przekaż NULL
ten parametr, jeśli nie potrzebujesz ścieżki katalogu.
fname
Nazwa pliku podstawowego (bez rozszerzenia). Przekaż NULL
ten parametr, jeśli nie potrzebujesz nazwy pliku.
ext
Rozszerzenie nazwy pliku, w tym okres wiodący (.
). Przekaż NULL
ten parametr, jeśli nie potrzebujesz rozszerzenia nazwy pliku.
Uwagi
Funkcja _splitpath
dzieli ścieżkę na cztery składniki. _splitpath
Automatycznie obsługuje argumenty ciągów wielobajtowych znaków zgodnie z potrzebami, rozpoznając sekwencje wielobajtowe znaków zgodnie ze stroną kodową wielobajtową, która jest obecnie używana. _wsplitpath
jest wersją szerokoznakową ; _splitpath
argumenty, które mają _wsplitpath
być ciągami o szerokim znaku. Te funkcje zachowują się identycznie inaczej.
Uwaga zabezpieczeń Te funkcje podlegają przepełnieniom buforu. Problemy z przepełnieniem buforu są częstą metodą ataku systemowego, co powoduje nieuzasadnione podniesienie uprawnień. Aby uzyskać więcej informacji, zobacz Unikanie przekroków buforu. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz _splitpath_s
, _wsplitpath_s
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
TCHAR.H rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Każdy składnik pełnej ścieżki jest przechowywany w osobnym buforze; stałe manifestu _MAX_DRIVE
, , _MAX_DIR
_MAX_FNAME
i _MAX_EXT
(zdefiniowane w pliku STDLIB.H
) określają maksymalny rozmiar dla każdego składnika pliku. Składniki plików, które są większe niż odpowiadające stałe manifestu, powodują uszkodzenie stert.
Każdy bufor musi być tak duży, jak odpowiedni stała manifestu, aby uniknąć potencjalnego przepełnienie buforu.
W poniższej tabeli wymieniono wartości stałych manifestu.
Nazwa/nazwisko | Wartość |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Jeśli pełna ścieżka nie zawiera składnika (na przykład nazwy pliku), _splitpath
przypisuje puste ciągi do odpowiednich.
Możesz przekazać NULL
do _splitpath
dowolnego parametru innego niż path
ten, którego nie potrzebujesz.
Jeśli path
parametr ma NULL
wartość , wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, errno
jest ustawiona na EINVAL
wartość .
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Zobacz przykład dla elementu _makepath
.
Zobacz też
Obsługa plików
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s