_makepath_s
, _wmakepath_s
Bileşenlerden bir yol adı oluşturur. Bu işlevler, CRT'deki _makepath
_wmakepath
Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren sürümleridir.
Sözdizimi
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
path
Tam yol arabelleği.
sizeInWords
Arabelleğin sözcüklerle boyutu.
sizeInBytes
Arabelleğin bayt cinsinden boyutu.
drive
İstenen sürücüye karşılık gelen bir harf (A, B vb.) ve isteğe bağlı bir sondaki iki nokta üst üste içerir. _makepath_s
eksikse bileşik yola otomatik olarak iki nokta üst üste ekler. boş bir dizeyse drive
NULL
veya bu dizeyi işaret ederse, bileşik path
dizede sürücü harfi görüntülenmez.
dir
Sürücü belirteci veya gerçek dosya adı dahil değil dizinlerin yolunu içerir. Sondaki eğik çizgi isteğe bağlıdır ve tek dir
bir bağımsız değişkende eğik çizgi (/) veya ters eğik çizgi (\) ya da her ikisi de kullanılabilir. Sondaki eğik çizgi (/ veya \) belirtilmezse, otomatik olarak eklenir. boş bir dizeyse dir
NULL
veya bu dizeyi işaret ederse, bileşik path
dizeye dizin yolu eklenmez.
fname
Herhangi bir dosya adı uzantısı olmadan temel dosya adını içerir. boş bir dizeye NULL
işaret ederse fname
veya işaret ederse, bileşik path
dizeye dosya adı eklenmez.
ext
Gerçek dosya adı uzantısını, başında nokta (.) olan veya olmayan dosya adı uzantısını içerir. _makepath_s
içinde görünmüyorsa ext
dönemi otomatik olarak ekler. boş bir dizeyse ext
NULL
veya bu dizeyi işaret ederse, bileşik path
dizeye uzantı eklenmez.
Dönüş değeri
Başarılı olursa sıfır; hatayla ilgili bir hata kodu.
Hata koşulları
path |
sizeInWords / sizeInBytes |
İade | İçeriği path |
---|---|---|---|
NULL |
herhangi bir | EINVAL |
değiştirilmedi |
herhangi bir | <= 0 | EINVAL |
değiştirilmedi |
Yukarıdaki hata koşullarından herhangi biri oluşursa, bu işlevler Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, errno
olarak ayarlanır EINVAL
ve işlevleri döndürür EINVAL
. NULL
, fname
ve ext
parametreleri drive
için izin verilir. Bu parametrelerin null işaretçiler veya boş dizeler olduğu davranış hakkında bilgi için Açıklamalar bölümüne bakın.
Açıklamalar
işlevi, _makepath_s
tek tek bileşenlerden bileşik bir yol dizesi oluşturur ve sonucu içinde path
depolar. bir path
sürücü harfi, dizin yolu, dosya adı ve dosya adı uzantısı içerebilir. _wmakepath_s
, öğesinin _makepath_s
geniş karakterli bir sürümüdür; için bağımsız değişkenler _wmakepath_s
geniş karakterli dizelerdir. _wmakepath_s
ve _makepath_s
aksi takdirde aynı şekilde davran.
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 yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tmakepath_s |
_makepath_s |
_makepath_s |
_wmakepath_s |
Bağımsız değişken, path
tam yolu tutacak kadar büyük boş bir arabelleğe işaret etmelidir. Bileşik path
, Stdlib.h dosyasında tanımlanan sabitten _MAX_PATH
büyük olmamalıdır.
yol iseNULL
, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Buna ek olarak, errno
olarak EINVAL
ayarlanır. NULL
diğer tüm parametreler için değerlere izin verilir.
C++'ta bu işlevlerin kullanılması şablon aşırı yüklemeleriyle basitleştirilir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkarabilir (boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır) ve eski, güvenli olmayan işlevleri yeni ve güvenli karşılıklarıyla otomatik olarak değiştirebilir. 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 |
---|---|
_makepath_s |
<stdlib.h> |
_wmakepath_s |
<stdlib.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Ö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 );
}
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
Ayrıca bkz.
Dosya işleme
_fullpath
, _wfullpath
_splitpath_s
, _wsplitpath_s
_makepath
, _wmakepath