_makepath_s 関数は、1 つのパスを作成し、path に格納します。パスには、ドライブ名、ディレクトリのパス、ファイル名、およびファイル名の拡張子が含まれます。ワイド文字を扱う場合は、_makepath_s ではなく _wmakepath_s を使用します。この場合、_wmakepath_s の引数にはワイド文字列を指定します。引数の指定以外では、_wmakepath_s と _makepath_s の動作は同じです。
汎用テキスト ルーチンのマップ
|
Tchar.h のルーチン
|
_UNICODE および _MBCS が未定義の場合
|
_MBCS が定義されている場合
|
_UNICODE が定義されている場合
|
| _tmakepath_s | _makepath_s | _makepath_s | _wmakepath_s |
パスの要素を含むバッファを指す引数は次のとおりです。
- drive
-
目的のドライブに対応する文字 (A、B など) を指定します。後続のコロンは省略できます。コロンを省略した場合、_makepath_s によって、コロンが自動的にパス名に挿入されます。drive が null 文字または空の文字列の場合、作成される path 文字列にドライブ名とコロンは含まれません。
- dir
-
ドライブ指定子と実際のファイル名を除いて、ディレクトリのパスを指定します。後続のスラッシュまたは円記号は省略できます。1 つの dir 引数には、スラッシュ (/) か円記号 (\)、またはその両方を使用することもできます。後続のスラッシュ (/) または円記号 (\) は、指定しなくても自動的に挿入されます。dir が null 文字または空の文字列の場合、作成される path 文字列にスラッシュや円記号は挿入されません。
- fname
-
拡張子を付けずにベース ファイル名を指定します。fname が NULL の場合、または空の文字列を指す場合、作成される path 文字列にファイル名は挿入されません。
- ext
-
実際のファイル名の拡張子を指定します。先頭のピリオド (.) は省略できます。ext にピリオドがない場合、_makepath_s によって自動的にピリオドが挿入されます。ext が null 文字または空の文字列の場合、作成される path 文字列にピリオドは挿入されません。
path 引数は、絶対パスを保持するのに十分な大きさの空きバッファを指す必要があります。path を構成するフィールドにサイズ制限はありませんが、作成される path の長さは、Stdlib.h に定義されている _MAX_PATH 定数以下にする必要があります。_MAX_PATH 定数は、現在のオペレーティング システムで処理できる長さを超えることがあります。
C++ では、これらの関数の使用はテンプレートのオーバーロードによって簡素化されます。オーバーロードでは、バッファ長を自動的に推論できる (サイズの引数を指定する必要がなくなる) だけでなく、古くてセキュリティが万全ではない関数を新しく安全な関数に自動的に置き換えることができます。詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。
これらの関数のデバッグ バージョンは、最初にバッファを 0xFD で埋めます。この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。