_splitpath_s, _wsplitpath_s
Yol adı bileşenlerine ayırır. Bunlar sürümleridir _splitpath, _wsplitpath açıklandığı gibi güvenlik geliştirmeleri ile crt güvenlik özellikleri.
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
[in]path
Tam yolu.[Çıkış]drive
Sürücü harfi, üst üste işaretiyle (:). Geçirebilirsiniz NULL sürücü harfini gerekmiyorsa, bu parametre için.[in]driveNumberOfElements
Boyutunu drive tek bayt veya geniş karakter arabelleği. drive Olan NULL, bu değerin 0 olması gerekir.[Çıkış]dir
Sondaki eğik çizgi içeren dizin yolu. İleri eğik çizgi ( / ), ters eğik çizgi ( \ ), ya da her ikisi de kullanılabilir. Geçirebilirsiniz NULL dizin yolunu gerekmiyorsa, bu parametre için.[in]dirNumberOfElements
Boyutunu dir tek bayt veya geniş karakter arabelleği. dir Olan NULL, bu değerin 0 olması gerekir.[Çıkış]fname
Temel dosya adı (uzantısı olmadan). Geçirebilirsiniz NULL dosyaadı gerekmiyorsa, bu parametre için.[in]nameNumberOfElements
Boyutunu fname tek bayt veya geniş karakter arabelleği. fname Olan NULL, bu değerin 0 olması gerekir.[Çıkış]ext
Dönem başında da dahil olmak üzere, dosya adı uzantısı (.).Geçirebilirsiniz NULL dosya adı uzantısı gerekmiyorsa, bu parametre için.[in]extNumberOfElements
Boyutunu ext tek bayt veya geniş karakter arabelleği. ext Olan NULL, bu değerin 0 olması gerekir.
Dönüş Değeri
Sıfır başarılı olursa; hata durumunda bir hata kodu.
Hata koşulları
Koşul |
Dönüş Değeri |
---|---|
pathİş NULL |
EINVAL |
driveis NULL, driveNumberOfElements is non-zero |
EINVAL |
driveis non-NULL, driveNumberOfElements is zero |
EINVAL |
diris NULL, dirNumberOfElements is non-zero |
EINVAL |
diris non-NULL, dirNumberOfElements is zero |
EINVAL |
fnameis NULL, nameNumberOfElements is non-zero |
EINVAL |
fnameis non-NULL, nameNumberOfElements is zero |
EINVAL |
extis NULL, extNumberOfElements is non-zero |
EINVAL |
extis non-NULL, extNumberOfElements is zero |
EINVAL |
Yukarıdaki koşullardan herhangi biri meydana gelirse, geçersiz parametre işleyicisi, açıklandığı şekilde çağrılır Parametre doğrulama . Yürütülmesine devam etmek için izin verilmişse, bu işlevler kümesi errno için EINVAL ve EINVAL.
Arabellekleri biri sonucu tutmak için kısa, bu işlevler boş dizeler için ayarlanmış tüm arabellekler temizleyin errno için ERANGEve ERANGE.
Notlar
_splitpath_s İşlevi, dört bileşenlerine bir yol keser. _splitpath_s şu anda kullanımda çok baytlı kod sayfasına göre çok baytlı karakter dizileri tanımayı çok baytlı karakter dizesi değişkenleri uygun şekilde otomatik olarak yönetir. _wsplitpath_s geniş karakter sürümü _splitpath_s; bağımsız _wsplitpath_sgeniş karakter dizeleridir. Aksi takdirde bu işlevler aynı şekilde davranır
Genel metin yordamı eşlemeleri
TCHAR.H yordamına girildi |
_UNICODE & _mbcs tanımlı değil |
Tanımlanan _mbcs |
Tanımlanan _UNICODE |
---|---|---|---|
_tsplitpath_s |
_splitpath_s |
_splitpath_s |
_wsplitpath_s |
Tam yolu her bileşeni ayrı bir arabellekte depolanır; Bildirim sabitler _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, ve _MAX_EXT (STDLIB'de tanımlanmıştır.h) her dosya bileşen için izin verilen boyut sınırı belirtin. Bileşenler, ilgili bildirim sabitleri yığın bozulmasına neden daha büyük dosya.
Bildirim sabitler değerleri aşağıdaki tabloda listelenmektedir.
Ad |
Value |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Bir bileşen (örneğin, bir dosya adı), tam yolu içermiyorsa, _splitpath_s karşılık gelen arabellek boş bir dize atar.
C++'da, bu işlevler tarafından şablon aşırı kolaylaştırılmıştır; aşırı arabellek uzunluğu otomatik olarak size baðýmsýz deðiþkeni belirtmek için gereksiz gerçekleştirip. Daha fazla bilgi için bkz. Güvenli şablon aşırı yükleme.
Bu işlevleri hata ayıklama sürümlerini ilk tampon 0xFD ile doldurun. Bu davranışı devre dışı bırakmak için _CrtSetDebugFillThreshold.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
_splitpath_s |
<stdlib.h> |
_wsplitpath_s |
<stdlib.h> veya <wchar.h> |
Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.
Örnek
Örnek için bkz: _makepath_s, _wmakepath_s.
.NET Framework Eşdeğeri
Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.