_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.

エイリアスdir
ドライブ指定子も実際のファイル名も含まない、ディレクトリのパスを含んでいます。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 (.). _makepathは、 extに表示されない場合、自動的に期間を挿入します。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.

RemarksRemarks

_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.

汎用テキスト ルーチンのマップ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><stdlib.h>
_wmakepath_wmakepath <stdlib.h> または <wchar.h><stdlib.h> or <wchar.h>

互換性の詳細については、「 互換性」を参照してください。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