_splitpath
, _wsplitpath
Memecah jalur menjadi komponen. Untuk versi fungsi ini yang lebih aman tersedia, lihat _splitpath_s
, _wsplitpath_s
.
Sintaks
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
);
Parameter
path
Jalur lengkap.
drive
Huruf kandar, diikuti dengan titik dua (:). Anda dapat meneruskan NULL
parameter ini jika Anda tidak memerlukan huruf drive.
dir
Jalur direktori, termasuk garis miring berikutnya. Garis miring ( /
), garis miring terbalik ( \
), atau keduanya dapat digunakan. Teruskan NULL
untuk parameter ini jika Anda tidak memerlukan jalur direktori.
fname
Nama file dasar (tanpa ekstensi). Teruskan NULL
untuk parameter ini jika Anda tidak memerlukan nama file.
ext
Ekstensi nama file, termasuk periode awal (.
). Teruskan NULL
untuk parameter ini jika Anda tidak memerlukan ekstensi nama file.
Keterangan
Fungsi ini _splitpath
memecah jalur menjadi empat komponennya. _splitpath
secara otomatis menangani argumen string multibyte-character yang sesuai, mengenali urutan karakter multibyte sesuai dengan halaman kode multibyte yang saat ini digunakan. _wsplitpath
adalah versi karakter luas dari _splitpath
; argumen untuk _wsplitpath
adalah string karakter lebar. Fungsi-fungsi ini berulah secara identik jika tidak.
Catatan Keamanan Fungsi-fungsi ini tunduk pada buffer overrun. Masalah buffer overrun adalah metode serangan sistem yang sering, yang mengakibatkan peningkatan hak istimewa yang tidak beralasan. Untuk informasi selengkapnya, lihat Menghindari overruns buffer. Versi yang lebih aman dari fungsi-fungsi ini tersedia; lihat _splitpath_s
, _wsplitpath_s
.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Pemetaan rutin teks generik
TCHAR.H Rutin |
_UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Setiap komponen jalur lengkap disimpan dalam buffer terpisah; konstanta _MAX_DRIVE
manifes , _MAX_DIR
, _MAX_FNAME
, dan _MAX_EXT
(ditentukan dalam STDLIB.H
) menentukan ukuran maksimum untuk setiap komponen file. Komponen file yang lebih besar dari konstanta manifes yang sesuai menyebabkan kerusakan tumpukan.
Setiap buffer harus sebesar konstanta manifes yang sesuai untuk menghindari potensi buffer overrun.
Tabel berikut mencantumkan nilai konstanta manifes.
Nama | Nilai |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Jika jalur lengkap tidak berisi komponen (misalnya, nama file), _splitpath
menetapkan string kosong ke buffer yang sesuai.
Anda dapat meneruskan NULL
ke _splitpath
parameter apa pun selain path
yang tidak Anda butuhkan.
Jika path
adalah NULL
, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, errno
diatur ke EINVAL
.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> atau <wchar.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
Lihat contoh untuk _makepath
.
Baca juga
Penanganan file
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk