_splitpath
, _wsplitpath
Yolu bileşenlere ayırma. Bu işlevlerin daha güvenli sürümleri için bkz _splitpath_s
. , _wsplitpath_s
.
Sözdizimi
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
);
Parametreler
path
Tam yol.
drive
Sürücü harfi ve ardından iki nokta üst üste (:). Sürücü harfine ihtiyacınız yoksa bu parametreyi geçirebilirsiniz NULL
.
dir
Dizin yolu, sondaki eğik çizgi de dahil. Eğik çizgi ( /
), ters eğik çizgi ( \
), veya her ikisi de kullanılabilir. Dizin yoluna ihtiyacınız yoksa bu parametreyi geçirin NULL
.
fname
Temel dosya adı (uzantı yok). Dosya adına ihtiyacınız yoksa bu parametreyi geçirin NULL
.
ext
Baştaki nokta (.
) dahil olmak üzere dosya adı uzantısı. Dosya adı uzantısına ihtiyacınız yoksa bu parametreyi geçirin NULL
.
Açıklamalar
İşlev, _splitpath
dört bileşenine bir yol ayırır. _splitpath
çok baytlı dize bağımsız değişkenlerini uygun şekilde otomatik olarak işler ve kullanımda olan çok baytlı kod sayfasına göre çok baytlı karakter dizilerini algılar. _wsplitpath
, öğesinin _splitpath
geniş karakterli bir sürümüdür; için bağımsız değişkenler _wsplitpath
geniş karakterli dizelerdir. Bu işlevler aynı şekilde davranır.
Güvenlik Notu Bu işlevler arabellek taşmalarına tabidir. Arabellek taşması sorunları sık karşılaşılan bir sistem saldırısı yöntemidir ve bu da ayrıcalıkların gereksiz bir şekilde yükseltilmesine neden olur. Daha fazla bilgi için bkz . Arabellek taşmalarından kaçınma. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. _splitpath_s
, _wsplitpath_s
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Genel metin yordamı eşlemeleri
TCHAR.H olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Tam yolun her bileşeni ayrı bir arabellekte depolanır; , , _MAX_FNAME
_MAX_DIR
ve _MAX_EXT
(içinde STDLIB.H
tanımlanan) bildirim sabitleri_MAX_DRIVE
, her dosya bileşeni için en büyük boyutu belirtir. İlgili bildirim sabitlerinden daha büyük dosya bileşenleri yığın bozulmasına neden olur.
Olası arabellek taşmasını önlemek için her arabellek ilgili bildirim sabiti kadar büyük olmalıdır.
Aşağıdaki tabloda bildirim sabitlerinin değerleri listelemektedir.
Veri Akışı Adı | Değer |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
Kategori 256 |
_MAX_FNAME |
Kategori 256 |
_MAX_EXT |
Kategori 256 |
Tam yol bir bileşen (örneğin, bir dosya adı) _splitpath
içermiyorsa, karşılık gelen arabelleklere boş dizeler atar.
İhtiyaç duymadığınız dışında herhangi bir parametre path
için adresine geçirebilirsiniz.NULL
_splitpath
ise path
NULL
, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin veriliyorsa, errno
olarak EINVAL
ayarlanır.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
örneğine _makepath
bakın.
Ayrıca bkz.
Dosya işleme
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s