Bagikan melalui


_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_DRIVEmanifes , _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