_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
以外のパラメーターに対して、NULL
を_splitpath
に渡すことができます。
path
が NULL
の場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、errno
は EINVAL
に設定されます。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
_makepath
の例を参照してください。
関連項目
ファイル処理
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s