Aracılığıyla paylaş


_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 _splitpathgeniş 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_DIRve _MAX_EXT (içinde STDLIB.Htanı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 EINVALayarlanı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 _makepathbakın.

Ayrıca bkz.

Dosya işleme
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp
_splitpath_s, _wsplitpath_s