_fullpath _wfullpath
建立 [絕對] 或 [完整路徑名稱做為指定的相對路徑名稱。
char *_fullpath(
char *absPath,
const char *relPath,
size_t maxLength
);
wchar_t *_wfullpath(
wchar_t *absPath,
const wchar_t *relPath,
size_t maxLength
);
參數
absPath
指標,此緩衝區包含絕對或完整路徑名稱,則傳回 NULL。relPath
相對路徑名稱。maxLength
絕對路徑名稱的緩衝區的最大長度 (absPath)。 這個長度是以位元組為單位的_fullpath但以寬字元為單位 (wchar_t) 的_wfullpath。
傳回值
每個函式傳回的指標,此緩衝區包含絕對路徑名稱 (absPath)。 如果發生錯誤 (比方說,如果傳入的值時,才relPath包含的磁碟機代號不正確或找不到,或者如果建立的絕對路徑名稱的長度 (absPath) 大於maxLength),函式會傳回NULL。
備註
_fullpath函式會展開中的相對路徑名稱relPath為完整或絕對路徑和存放區中這命名absPath*.* 如果absPath為 NULL, malloc用來配置足夠的長度,以便保留路徑名稱的緩衝區。 是以釋出這個緩衝區的呼叫端的責任。 相對路徑名稱指定到另一個位置的路徑,從目前所在位置 (例如目前的工作目錄:"。")。 絕對路徑名稱是擴充的說明,才能達到想要的位置從根目錄檔案系統的完整路徑的相對路徑名稱。 不像_makepath, _fullpath可以用來取得相對路徑的絕對路徑名稱 (relPath),包括 「。 /"../"在名稱中。
比方說,若要使用 c 執行階段常式,應用程式必須包括包含常式宣告的標頭檔。 每個標頭檔包含陳述式的參考檔案的位置相對的方式 (從應用程式的工作目錄):
#include <stdlib.h>
當可能是檔案的絕對路徑 (實體檔案系統位置):
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
_fullpath 會自動處理多位元組字元字串引數視需要辨識多位元組字元順序,根據目前使用中的多位元組字碼頁。 _wfullpath 寬字元版本的_fullpath。 字串引數去_wfullpath 是寬字元字串。 _wfullpath 與_fullpath 運作方式完全相同,除了_wfullpath 不處理多位元組字元字串。
如果_DEBUG 和_CRTDBG_MAP_ALLOC 是這兩個定義,呼叫_fullpath和_wfullpath已由呼叫_fullpath_dbg和_wfullpath_dbg以便進行偵錯記憶體配置。 如需詳細資訊,請參閱 _fullpath_dbg、 _wfullpath_dbg。
如所述,這個函式叫用無效的參數處理常式中, 參數驗證,如果maxlen小於或等於 0。 如果執行,則允許繼續執行,這個函式會將errno到EINVAL ,並傳回NULL。
泛用文字常式對應
Tchar.h 常式 |
_Unicode 之後,未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
如果absPath緩衝區NULL, _fullpath呼叫 malloc 配置的緩衝區,並忽略maxLength引數。 呼叫者必須負責解除配置此緩衝區 (使用免費) 視需要。 如果relPath引數會指定磁碟機、 磁碟機的目前的目錄加上路徑。
需求
Function |
所需的標頭 |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> 或者 <wchar.h> |
如需相容性資訊,請參閱相容性在簡介中。
範例
// 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" );
}