_splitpath
, _wsplitpath
パス名をコンポーネントに分割します。 これらの関数のセキュリティを強化したバージョンを使用できます。「_splitpath_s
、_wsplitpath_s
」を参照してください。
構文
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
const wchar_t *path,
wchar_t *drive,
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
パラメーター
path
完全パス。
drive
ドライブ文字、その後にコロン (:)。 ドライブ文字が必要ない場合は、このパラメーターに を渡 NULL
すことができます。
dir
末尾のスラッシュを含むディレクトリ パス。 スラッシュ (/)、バックスラッシュ (\)、または両方を使用できます。 ディレクトリ パスが必要ない場合は、このパラメーターに を渡 NULL
すことができます。
fname
基本ファイル名 (拡張子なし)。 ファイル名が不要な場合は、このパラメーターに を渡 NULL
すことができます。
ext
先頭のピリオド (.) を含む、ファイル名の拡張子。 ファイル名拡張子が不要な場合は、このパラメーターに を渡 NULL
すことができます。
解説
_splitpath
関数は、パスを 4 つのコンポーネントに分割します。 _splitpath
は、マルチバイト文字列引数を自動的に適切に処理し、現在使用しているマルチバイト コード ページに従ってマルチバイト文字シーケンスを認識します。 _wsplitpath
は _splitpath
のワイド文字バージョンであり、_wsplitpath
の引数はワイド文字列です。 それ以外では、これらの関数の動作は同じです。
セキュリティに関するメモ これらの関数は、バッファー オーバーランが原因で発生する潜在的な脅威の影響を受けます。 バッファー オーバーランは、システムを攻撃するときによく使用される方法であり、その結果、認められていない権限が昇格されます。 詳細については、「 バッファー オーバーランの回避」を参照してください。 これらの関数のセキュリティを強化したバージョンを使用できます。「_splitpath_s
、_wsplitpath_s
」を参照してください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「 CRT のグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H ルーチン |
_UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
完全なパスの各コンポーネントは、別々のバッファーに格納されています。マニフェスト定数 _MAX_DRIVE
、_MAX_DIR
、_MAX_FNAME
、_MAX_EXT
(STDLIB.H
で定義される) で、各ファイル コンポーネントの最大サイズを指定します。 対応するマニフェスト定数よりも大きいファイル コンポーネントでは、ヒープ破損が発生します。
各バッファーは、バッファー オーバーランの発生を回避するために、対応するマニフェスト定数と同じ大きさである必要があります。
マニフェスト定数の値を次の表に示します。
名前 | [値] |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
完全なパスにコンポーネント (ファイル名など) _splitpath
が含まれていない場合は、対応するバッファーに空の文字列を割り当てます。
不要なパラメーター以外path
のパラメーターに対して を _splitpath
に渡NULL
すことができます。
が の場合path
、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。NULL
実行の継続が許可された場合、errno
が EINVAL
に設定され、関数から EINVAL
が返されます。
必要条件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> または <wchar.h> |
互換性について詳しくは、「 Compatibility」をご覧ください。
例
_makepath
の例を参照してください。
関連項目
ファイル処理
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s