_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 実行の継続が許可された場合、errnoEINVAL に設定され、関数から EINVAL が返されます。

必要条件

ルーチンによって返される値 必須ヘッダー
_splitpath <stdlib.h>
_wsplitpath <stdlib.h> または <wchar.h>

互換性について詳しくは、「 Compatibility」をご覧ください。

_makepath の例を参照してください。

関連項目

ファイル処理
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp
_splitpath_s, _wsplitpath_s