_fullpath
, _wfullpath
Belirtilen göreli yol adı için mutlak veya tam yol adı oluşturur.
Sözdizimi
char *_fullpath(
char *absPath,
const char *relPath,
size_t maxLength
);
wchar_t *_wfullpath(
wchar_t *absPath,
const wchar_t *relPath,
size_t maxLength
);
Parametreler
absPath
Mutlak veya tam yol adını içeren bir arabelleğe yönelik işaretçi veya NULL
.
relPath
Göreli yol adı.
maxLength
Mutlak yol adı arabelleğinin uzunluğu üst sınırı (absPath
). Bu uzunluk için _fullpath
bayt cinsinden, ancak için geniş karakter (wchar_t
) _wfullpath
cinsindendir.
Dönüş değeri
Bu işlevlerin her biri, mutlak yol adını (absPath
) içeren bir arabelleğe yönelik bir işaretçi döndürür. Bir hata varsa (örneğin, geçirilen relPath
değer geçerli olmayan veya bulunamıyor bir sürücü harfi içeriyorsa veya oluşturulan mutlak yol adının uzunluğu (absPath
) değerinden maxLength
büyükse), işlevi döndürür NULL
.
Açıklamalar
işlevi içindeki _fullpath
relPath
göreli yol adını tam veya mutlak yoluna genişletir ve bu adı içinde absPath
depolar. ise absPath
NULL
, malloc
yol adını tutmak için yeterli uzunlukta bir arabellek ayırmak için kullanılır. Bu arabelleği boşaltmak çağıranın sorumluluğundadır. Göreli yol adı, geçerli konumdan (geçerli çalışma dizini: .
gibi) başka bir konuma giden yolu belirtir. Mutlak yol adı, dosya sisteminin kökünden istenen konuma ulaşmak için gereken yolun tamamını belirten göreli yol adının genişletilmesidir. 'nin aksine_makepath
, _fullpath
adlarını içeren ./
veya ../
içeren göreli yolların (relPath
) mutlak yol adını almak için kullanılabilir.
Örneğin, C çalışma zamanı yordamlarını kullanmak için uygulamanın yordamların bildirimlerini içeren üst bilgi dosyalarını içermesi gerekir. Her üst bilgi dosyası #include
yönergesi, dosyanın konumuna göreli bir şekilde (uygulamanın çalışma dizininden) başvurur:
#include <stdlib.h>
dosyanın mutlak yolu (gerçek dosya sistemi konumu) şu şekilde olabilir:
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
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.
_fullpath
ç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. _wfullpath
, öğesinin _fullpath
geniş karakterli bir sürümüdür; için _wfullpath
dize bağımsız değişkenleri geniş karakterli dizelerdir. _wfullpath
ve _fullpath
çok baytlı dizeleri işlememesi dışında _wfullpath
aynı şekilde davranır.
ve _CRTDBG_MAP_ALLOC
her ikisi de tanımlanmışsa_DEBUG
, ve çağrıları _fullpath
_wfullpath
, bellek ayırmalarında hata ayıklamanıza olanak sağlamak için ve _wfullpath_dbg
çağrılarıyla _fullpath_dbg
değiştirilir. Daha fazla bilgi için bkz. _fullpath_dbg
, _wfullpath_dbg
.
Bu işlev, 0'dan küçük veya 0'a eşitse maxlen
Parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, bu işlev olarak EINVAL
ayarlanır errno
ve döndürürNULL
.
Genel metin yordamı eşlemeleri
Tchar.h olağan |
_UNICODE and _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
absPath
Arabellek iseNULL
, _fullpath
arabelleği ayırmak için öğesini çağırır malloc
ve bağımsız değişkeni yoksayarmaxLength
. Bu arabelleği (kullanarak free
) uygun şekilde serbest bırakmak çağıranın sorumluluğundadır. relPath
Bağımsız değişken bir disk sürücüsü belirtirse, bu sürücünün geçerli dizini yol ile birleştirilir.
Gereksinimler
İşlev | Gerekli başlık |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_fullpath.c
// This program demonstrates how _fullpath
// creates a full path from a partial path.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <direct.h>
void PrintFullPath( char * partialPath )
{
char full[_MAX_PATH];
if( _fullpath( full, partialPath, _MAX_PATH ) != NULL )
printf( "Full path is: %s\n", full );
else
printf( "Invalid path\n" );
}
int main( void )
{
PrintFullPath( "test" );
PrintFullPath( "\\test" );
PrintFullPath( "..\\test" );
}
Full path is: C:\Documents and Settings\user\My Documents\test
Full path is: C:\test
Full path is: C:\Documents and Settings\user\test
Ayrıca bkz.
Dosya işleme
_getcwd
, _wgetcwd
_getdcwd
, _wgetdcwd
_makepath
, _wmakepath
_splitpath
, _wsplitpath