_makepath
, _wmakepath
Bileşenlerden bir yol adı oluşturun. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. _makepath_s
, _wmakepath_s
.
Sözdizimi
void _makepath(
char *path,
const char *drive,
const char *dir,
const char *fname,
const char *ext
);
void _wmakepath(
wchar_t *path,
const wchar_t *drive,
const wchar_t *dir,
const wchar_t *fname,
const wchar_t *ext
);
Parametreler
path
Tam yol arabelleği.
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
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 bir uzantıyı içerir. _makepath
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.
Açıklamalar
işlevi, _makepath
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
, öğesinin _makepath
geniş karakterli bir sürümüdür; için bağımsız değişkenler _wmakepath
geniş karakterli dizelerdir. _wmakepath
ve _makepath
aksi takdirde aynı şekilde davran.
Güvenlik Notu Null olarak sonlandırılan bir dize kullanın. Arabellek taşmasını önlemek için, null ile sonlandırılan dize arabellek boyutunu path
aşmamalıdır. _makepath
bileşik yol dizesinin uzunluğunun aşmamasını _MAX_PATH
sağlamaz. Daha fazla bilgi için bkz . Arabellek taşmalarından kaçınma.
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 |
_makepath |
_makepath |
_wmakepath |
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.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_makepath.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];
_makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); // C4996
// Note: _makepath is deprecated; consider using _makepath_s instead
printf( "Path created with _makepath: %s\n\n", path_buffer );
_splitpath( path_buffer, drive, dir, fname, ext ); // C4996
// Note: _splitpath is deprecated; consider using _splitpath_s instead
printf( "Path extracted with _splitpath:\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: c:\sample\crt\makepath.c
Path extracted with _splitpath:
Drive: c:
Dir: \sample\crt\
Filename: makepath
Ext: .c
Ayrıca bkz.
Dosya işleme
_fullpath
, _wfullpath
_splitpath
, _wsplitpath
_makepath_s
, _wmakepath_s