_splitpath_s
, _wsplitpath_s
Yol adını bileşenlere ayırır. Bu işlevler, CRT'deki _splitpath
_wsplitpath
Gü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 drive
NULL
, 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 dir
NULL
, 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 fname
NULL
, 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 ext
NULL
, 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 |
---|---|
path dir NULL |
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 ERANGE
ayarlanı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_s
geniş 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 olağan |
_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_FNAME
ve _MAX_EXT
(içinde STDLIB.H
tanı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.
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_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_s
bakın.
Ayrıca bkz.
Dosya işleme
_splitpath
, _wsplitpath
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp