_makepath _wmakepath
建立元件的路徑名稱。 這些函式更安全版本都可使用; see _makepath_s _wmakepath_s.
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
);
參數
path
完整路徑的緩衝區。drive
包含字母 (A、 B 等等) 對應到您想要的磁碟機,並選擇性的後端冒號。 _makepath如果遺失,請自動插入複合路徑中的冒號。 如果drive是NULL點設為空字串,沒有磁碟機代號會顯示在複合稿或path的字串。dir
包含不包括磁碟機指定代碼或實際的檔名的目錄路徑。 結尾的斜線是選擇性的且正斜線 (/) 或反斜線 (\),或兩者皆可能用於單一dir引數。 如果結尾沒有斜線 (/ 或 \) 指定,則它會自動插入。 如果dir是NULL或複合稿在插入點設為空字串,而沒有目錄路徑path的字串。fname
包含的主檔名,沒有任何檔案的副檔名。 如果fname是NULL或複合稿在插入點設為空字串,而沒有檔名path的字串。ext
包含實際的檔案名稱副檔名,不論有前置句號 (.)。 _makepath自動插入期間,如果它不會出現在ext。 如果ext是NULL的複合稿在插入點設為空字串,而沒有副檔名或path的字串。
備註
_makepath函式會建立複合路徑字串從個別的元件,並且在將結果儲存path。 path可能包括磁碟機代號、 目錄路徑、 檔名和副檔名。 _wmakepath寬字元版本的**_makepath**。 引數去**_wmakepath是寬字元字串。 _wmakepath與_makepath**其他方式完全相同。
安全性附註使用 null 結尾字串。 若要避免緩衝區滿溢,null 結束的字串不能超過大小的path的緩衝區。 _makepath不能確保複合路徑字串的長度不超過_MAX_PATH。 如需詳細資訊,請參閱避免緩衝區滿溢,。
泛用文字常式對應
Tchar.h 常式 |
_Unicode 之後,未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
path引數必須指向一個空的緩衝區不夠大,無法容納的完整路徑。 綜合path必須不大於_MAX_PATH Stdlib.h 中定義的常數。
如果路徑為NULL,不正確的參數處理常式會叫用,如所述參數驗證。 此外, errno設定為 [ EINVAL。 NULL針對所有其他參數允許的值。
需求
常式 |
所需的標頭 |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> 或者 <wchar.h> |
如需相容性資訊,請參閱相容性在簡介中。
範例
// 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 );
}