_makepath、_wmakepath_makepath, _wmakepath

コンポーネントからパス名を作成します。Create a path name from components. これらの関数のセキュリティを強化したバージョンについては、「_makepath_s、_wmakepath_s (_makepath_s、_wmakepath_s)」をご覧ください。More secure versions of these functions are available; see _makepath_s, _wmakepath_s.

構文Syntax

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

パラメーターParameters

pathpath
完全なパスのバッファー。Full path buffer.

駆動drive
必要なドライブに対応する文字 (A、B など) と、この後に続くオプションのコロンを含んでいます。Contains a letter (A, B, and so on) corresponding to the desired drive and an optional trailing colon. _makepath は、複合パスにコロンが含まれている場合は、そのコロンを自動的に挿入します。_makepath inserts the colon automatically in the composite path if it is missing. ドライブNULL であるか、空の文字列を指している場合、複合 パス 文字列にドライブ文字は表示されません。If drive is NULL or points to an empty string, no drive letter appears in the composite path string.

dirdir
ドライブ指定子も実際のファイル名も含まない、ディレクトリのパスを含んでいます。Contains the path of directories, not including the drive designator or the actual file name. 末尾のスラッシュは省略可能であり、スラッシュ (/) または円記号 () のいずれか \ または両方を1つの dir 引数で使用できます。The trailing slash is optional, and either a forward slash (/) or a backslash (\) or both might be used in a single dir argument. 末尾のスラッシュ (/ と \ のいずれも) を指定していない場合は、スラッシュが自動的に挿入されます。If no trailing slash (/ or \) is specified, it is inserted automatically. DirNULL であるか、空の文字列を指している場合、複合 パス 文字列にディレクトリパスは挿入されません。If dir is NULL or points to an empty string, no directory path is inserted in the composite path string.

fnamefname
ファイル名拡張子がないベース ファイル名が含まれています。Contains the base file name without any file name extensions. FnameNULL の場合、または空の文字列を指している場合は、複合 パス 文字列にファイル名は挿入されません。If fname is NULL or points to an empty string, no filename is inserted in the composite path string.

extext
実際のファイル名拡張子が含まれており、先頭のピリオド (.) の有無は問いません。Contains the actual file name extension, with or without a leading period (.). [ ext (拡張) に表示されない場合、 _makepath によって自動的に期間が挿入されます。ExtNULL の場合、または空の文字列を指している場合は、複合 パス 文字列に拡張子は挿入されません。_makepath inserts the period automatically if it does not appear in ext. If ext is NULL or points to an empty string, no extension is inserted in the composite path string.

解説Remarks

_Makepath 関数は、個々のコンポーネントから複合パス文字列を作成し、結果を パス に格納します。The _makepath function creates a composite path string from individual components, storing the result in path. パス には、ドライブ文字、ディレクトリパス、ファイル名、およびファイル名拡張子を含めることができます。The path might include a drive letter, directory path, filename, and filename extension. _wmakepath_makepath のワイド文字バージョンです。 _wmakepath する引数はワイド文字列です。_wmakepath is a wide-character version of _makepath; the arguments to _wmakepath are wide-character strings. _wmakepath_makepath は同じように動作します。_wmakepath and _makepath behave identically otherwise.

セキュリティに関するメモ null で終わる文字列を使用してください。Security Note Use a null-terminated string. バッファーオーバーランを回避するには、null で終わる文字列が パス バッファーのサイズを超えないようにする必要があります。To avoid buffer overrun, the null-terminated string must not exceed the size of the path buffer. _makepath では、複合パス文字列の長さが _MAX_PATH を超えないようにすることはできません。_makepath does not ensure that the length of the composite path string does not exceed _MAX_PATH. 詳しくは、「 バッファー オーバーランの回避」をご覧ください。For more information, see Avoiding Buffer Overruns.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tmakepath_tmakepath _makepath_makepath _makepath_makepath _wmakepath_wmakepath

パス 引数は、完全なパスを保持するのに十分な大きさの空のバッファーを指す必要があります。The path argument must point to an empty buffer large enough to hold the complete path. 複合 パス は、stdlib.h> で定義されている _MAX_PATH 定数よりも大きくすることはできません。The composite path must be no larger than the _MAX_PATH constant, defined in Stdlib.h.

Path が NULL の場合は、「 パラメーターの検証」で説明されているように、無効なパラメーターハンドラーが呼び出されます。If path is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. さらに、 errnoEINVAL に設定されています。In addition, errno is set to EINVAL. 他のすべてのパラメーターには NULL 値を使用できます。NULL values are allowed for all other parameters.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_makepath_makepath <stdlib.h>
_wmakepath_wmakepath <stdlib.h> または <wchar.h><stdlib.h> or <wchar.h>

互換性について詳しくは、「 Compatibility」をご覧ください。For more compatibility information, see Compatibility.

Example

// 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

関連項目See also

ファイルの処理File Handling
_fullpath、_wfullpath_fullpath, _wfullpath
_splitpath、_wsplitpath_splitpath, _wsplitpath
_makepath_s、_wmakepath_s_makepath_s, _wmakepath_s