Udostępnij za pośrednictwem


_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ą ; _splitpathargumenty, 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 Rutynowych _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_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_FNAMEi _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 buforów.

Możesz przekazać NULL do _splitpath dowolnego parametru innego niż path ten, którego nie potrzebujesz.

Jeśli path parametr ma NULLwartość , 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 EINVALwartość .

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