_makepath_s, _wmakepath_s
Yol adı bileşenlerini oluşturur. Bunlar sürümleridir _makepath, _wmakepath açıklandığı gibi güvenlik geliştirmeleri ile crt güvenlik özellikleri.
errno_t _makepath_s(
char *path,
size_t sizeInBytes,
const char *drive,
const char *dir,
const char *fname,
const char *ext
);
errno_t _wmakepath_s(
wchar_t *path,
size_t sizeInWords,
const wchar_t *drive,
const wchar_t *dir,
const wchar_t *fname,
const wchar_t *ext
);
template <size_t size>
errno_t _makepath_s(
char (&path)[size],
const char *drive,
const char *dir,
const char *fname,
const char *ext
); // C++ only
template <size_t size>
errno_t _wmakepath_s(
wchar_t (&path)[size],
const wchar_t *drive,
const wchar_t *dir,
const wchar_t *fname,
const wchar_t *ext
); // C++ only
Parametreler
[Çıkış]path
Tam yol arabellek.[in]sizeInWords
Sözcükleri arabellek boyutu.[in]sizeInBytes
Arabelleğinin bayt cinsinden boyutu.[in]drive
Bir harf (a, b vb.) içeren istediğiniz sürücüyü ve isteğe bağlı sonunda iki nokta karşılık gelen. _makepath_seksik ise, iki nokta üst üste bileşik yolun otomatik olarak ekler. drive Olan NULL veya boş bir dize için sürücü harfi puntoda bileşik path dize.[in]dir
Sürücü göstergesi ya da gerçek bir dosya adı içermeyen dizin yolunu içerir. Eğik isteğe bağlıdır ve eğik çizgi (/) veya ters eğik çizgi (\) veya her ikisini tek bir kullanılabilir dir bağımsız değişkeni. Eğik çizgiye yok ise (/ veya \) belirtilmişse, otomatik olarak eklenir. dir Olan NULL veya boş bir dize, hiçbir dizin yolu noktalara bileşik eklenen path dize.[in]fname
Herhangi bir dosya adı uzantıları olmadan temel dosya adı içeriyor. fname Olan NULL ya da dosya adı boş bir dize noktalara bileşik eklenen path dize.[in]ext
Gerçek dosya adı uzantısı olan veya nokta (.) koymadan içerir. _makepath_sDönem içinde görüntülenmezse, otomatik olarak ekler ext. ext Olan NULL veya boş bir dize, hiçbir uzantı noktalara bileşik eklenen path dize.
Dönüş Değeri
Sıfır başarılı olursa; hata durumunda bir hata kodu.
Hata koşulları
path |
sizeInWords / sizeInBytes |
Return |
İçeriğipath |
---|---|---|---|
NULL |
herhangi bir |
EINVAL |
modifiye edilmemiş |
herhangi bir |
< = 0 |
EINVAL |
modifiye edilmemiş |
Yukarıdaki hata durumlardan herhangi biri meydana gelirse, bu işlevler geçersiz parametre işleyicisi açıklandığı şekilde harekete Parametre doğrulama. Yürütülmesine devam etmek için izin verilip verilmediğini errno ayarlamakEINVAL ve işlevleri döndürürEINVAL**.** NULLParametreler için izin drive, fname, ve ext. Davranış hakkında bilgi için bu parametreler işaretçi null veya boş dize olduğunda açıklamalar bölümüne bakın.
Notlar
_makepath_s İşlev sonucu depolamak bağımsız bileşenlerden bir bileşik yol dizesi oluşturur path. path Bir sürücü harfini, dizin yolu, dosya adı ve dosya adı uzantısı içerebilir. _wmakepath_sgeniş karakter sürümü _makepath_s; bağımsız _wmakepath_s geniş karakter dizeleridir. _wmakepath_sve _makepath_s Aksi takdirde aynı şekilde davranır.
Genel metin yordamı eşlemeleri
Tchar.h yordamına girildi |
_UNICODE ve _mbcs tanımlı değil |
Tanımlanan _mbcs |
Tanımlanan _UNICODE |
---|---|---|---|
_tmakepath_s |
_makepath_s |
_makepath_s |
_wmakepath_s |
path Bağımsız değişkeni, bir boş arabellek için tam yolunu tutacak büyüklükte göstermelidir. Bileşik path değerinden daha büyük olması _MAX_PATH sabiti, Stdlib.h içinde tanımlanan.
Yol, NULL, geçersiz parametre işleyicisi, açıklandığı şekilde çağrılır Parametre doğrulama. Buna ek olarak, errno ayarlamak EINVAL. NULLtüm diğer parametreler için izin verilen değerler.
C++'da, bu işlevler tarafından şablon aşırı kolaylaştırılmıştır; aşırı arabellek uzunluğu otomatik olarak gerçekleştirip (size baðýmsýz deðiþkeni belirtmek gereğini ortadan kaldırır) ve bunlar otomatik olarak yeni, güvenli karşılıkları ile eski, güvenli olmayan işlevler değiştirebilirsiniz. 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 |
---|---|
_makepath_s |
<stdlib.h> |
_wmakepath_s |
<stdlib.h> veya <wchar.h> |
Daha fazla uyumluluk bilgileri için bkz: Uyumluluk giriş.
Örnek
// crt_makepath_s.c
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
errno_t err;
err = _makepath_s( path_buffer, _MAX_PATH, "c", "\\sample\\crt\\",
"crt_makepath_s", "c" );
if (err != 0)
{
printf("Error creating path. Error code %d.\n", err);
exit(1);
}
printf( "Path created with _makepath_s: %s\n\n", path_buffer );
err = _splitpath_s( path_buffer, drive, _MAX_DRIVE, dir, _MAX_DIR, fname,
_MAX_FNAME, ext, _MAX_EXT );
if (err != 0)
{
printf("Error splitting the path. Error code %d.\n", err);
exit(1);
}
printf( "Path extracted with _splitpath_s:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}
Çıktı
Path created with _makepath_s: c:\sample\crt\crt_makepath_s.c
Path extracted with _splitpath_s:
Drive: c:
Dir: \sample\crt\
Filename: crt_makepath_s
Ext: .c