次の方法で共有


_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に渡すことができます。

pathNULL の場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、errnoEINVAL に設定されます。

要件

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

互換性の詳細については、「 Compatibility」を参照してください。

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

関連項目

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