Aracılığıyla paylaş


_splitpath_s, _wsplitpath_s

Yol adını bileşenlere ayırır. Bu işlevler, CRT'deki _splitpath_wsplitpathGüvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren sürümleridir.

Sözdizimi

errno_t _splitpath_s(
   const char * path,
   char * drive,
   size_t driveNumberOfElements,
   char * dir,
   size_t dirNumberOfElements,
   char * fname,
   size_t nameNumberOfElements,
   char * ext,
   size_t extNumberOfElements
);
errno_t _wsplitpath_s(
   const wchar_t * path,
   wchar_t * drive,
   size_t driveNumberOfElements,
   wchar_t *dir,
   size_t dirNumberOfElements,
   wchar_t * fname,
   size_t nameNumberOfElements,
   wchar_t * ext,
   size_t extNumberOfElements
);
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _splitpath_s(
   const char *path,
   char (&drive)[drivesize],
   char (&dir)[dirsize],
   char (&fname)[fnamesize],
   char (&ext)[extsize]
); // C++ only
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _wsplitpath_s(
   const wchar_t *path,
   wchar_t (&drive)[drivesize],
   wchar_t (&dir)[dirsize],
   wchar_t (&fname)[fnamesize],
   wchar_t (&ext)[extsize]
); // C++ only

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 .

driveNumberOfElements
Arabelleğin drive tek baytlı veya geniş karakterlerle boyutu. ise driveNULL, bu değer 0 olmalıdır.

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çirebilirsiniz NULL .

dirNumberOfElements
Arabelleğin dir tek baytlı veya geniş karakterlerle boyutu. ise dirNULL, bu değer 0 olmalıdır.

fname
Temel dosya adı (uzantı olmadan). Dosya adına ihtiyacınız yoksa bu parametreyi geçirebilirsiniz NULL .

nameNumberOfElements
Arabelleğin fname tek baytlı veya geniş karakterlerle boyutu. ise fnameNULL, bu değer 0 olmalıdır.

ext
Baştaki nokta (.) dahil olmak üzere dosya adı uzantısı. Dosya adı uzantısına ihtiyacınız yoksa bu parametre için geçirebilirsiniz NULL .

extNumberOfElements
Tek baytlı veya geniş karakterli arabellek boyutu ext . ise extNULL, bu değer 0 olmalıdır.

Dönüş değeri

Başarılı olursa sıfır; hatayla ilgili bir hata kodu.

Hata koşulları

Koşul Dönüş değeri
pathNULL EINVAL
drive is NULL, driveNumberOfElements sıfır değil EINVAL
drive sıfır değilNULL, driveNumberOfElements sıfır EINVAL
dir is NULL, dirNumberOfElements sıfır değil EINVAL
dir sıfır değilNULL, dirNumberOfElements sıfır EINVAL
fname is NULL, nameNumberOfElements sıfır değil EINVAL
fname sıfır değilNULL, nameNumberOfElements sıfır EINVAL
ext is NULL, extNumberOfElements sıfır değil EINVAL
ext sıfır değilNULL, extNumberOfElements sıfır EINVAL

Yukarıdaki koşullardan herhangi biri oluşursa, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler olarak EINVAL ayarlanır errno ve döndürürEINVAL.

Arabelleklerden herhangi biri sonucu tutamayacak kadar kısaysa, bu işlevler tüm arabellekleri boş dizelere temizler, olarak ERANGEayarlanır errno ve döndürürERANGE.

Açıklamalar

İşlev, _splitpath_s dört bileşenine bir yol ayırır. _splitpath_s ç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_s , öğesinin _splitpath_sgeniş karakterli bir sürümüdür; için bağımsız değişkenler _wsplitpath_s geniş karakterli dizelerdir. Bu işlevler aynı şekilde davranır

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 Rutin _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_tsplitpath_s _splitpath_s _splitpath_s _wsplitpath_s

Tam yolun her bileşeni ayrı bir arabellekte depolanır; bildirim sabitleri _MAX_DRIVE, _MAX_DIR, _MAX_FNAMEve _MAX_EXT (içinde STDLIB.Htanımlanır) her dosya bileşeni için izin verilen en büyük boyutu belirtir. İlgili bildirim sabitlerinden daha büyük dosya bileşenleri yığın bozulmasına neden olur.

Aşağıdaki tabloda bildirim sabitlerinin değerleri listelemektedir.

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_s içermiyorsa, ilgili arabelleğe boş bir dize atar.

C++'ta bu işlevlerin kullanılması şablon aşırı yüklemeleriyle basitleştirilir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkararak boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.

Bu işlevlerin hata ayıklama kitaplığı sürümleri önce arabelleği 0xFE ile doldurur. Bu davranışı devre dışı bırakmak için kullanın _CrtSetDebugFillThreshold.

Gereksinimler

Yordam Gerekli başlık
_splitpath_s <stdlib.h>
_wsplitpath_s <stdlib.h> veya <wchar.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

örneğine _makepath_s_wmakepath_sbakın.

Ayrıca bkz.

Dosya işleme
_splitpath, _wsplitpath
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp