共用方式為


_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 );
}
  

.NET Framework 對等用法

System::IO::File:: 建立

請參閱

參考

檔案處理

_fullpath _wfullpath

_splitpath _wsplitpath

_makepath_s _wmakepath_s