_splitpath、_wsplitpath_splitpath, _wsplitpath

パス名をコンポーネントに分割します。Break a path name into components. これらの関数のセキュリティを強化したバージョンについては、「_splitpath_s、_wsplitpath_s」をご覧ください。More secure versions of these functions are available, see _splitpath_s, _wsplitpath_s.

構文Syntax

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
);

パラメーターParameters

pathpath
完全なパス。Full path.

ドライブdrive
ドライブ文字、コロン (:)。Drive letter, followed by a colon (:). 渡すことができますNULLドライブ文字を必要としない場合は、このパラメーターにします。You can pass NULL for this parameter if you do not need the drive letter.

dirdir
末尾のスラッシュを含むディレクトリ パス。Directory path, including trailing slash. スラッシュ ( / )、円記号 ( \ )、または両方を使用できます。Forward slashes ( / ), backslashes ( \ ), or both may be used. 渡すことができますNULLディレクトリ パスを必要としない場合は、このパラメーターにします。You can pass NULL for this parameter if you do not need the directory path.

fnamefname
基本ファイル名 (拡張子なし)。Base filename (no extension). 渡すことができますNULLファイル名を必要としない場合は、このパラメーターにします。You can pass NULL for this parameter if you do not need the filename.

extext
先頭のピリオドを含むファイル名の拡張子 (.)。Filename extension, including leading period (.). 渡すことができますNULLファイル名拡張子が必要ない場合は、このパラメーターにします。You can pass NULL for this parameter if you do not need the filename extension.

RemarksRemarks

_Splitpath関数は、4 つのコンポーネントにパスを解除します。The _splitpath function breaks a path into its four components. _splitpath自動的に現在使用中のマルチバイト コード ページに従ってマルチバイト文字シーケンスを認識し、必要に応じてマルチバイト文字の文字列引数を処理します。_splitpath automatically handles multibyte-character string arguments as appropriate, recognizing multibyte-character sequences according to the multibyte code page currently in use. _wsplitpathのワイド文字バージョンは、 _splitpath; 引数 _wsplitpathはワイド文字列です。_wsplitpath is a wide-character version of _splitpath; the arguments to _wsplitpath are wide-character strings. それ以外では、これらの関数の動作は同じです。These functions behave identically otherwise.

セキュリティに関するメモこれらの関数は、バッファー オーバーランの問題によって潜在的な脅威を引き起こすことがあります。Security Note These functions incur a potential threat brought about by a buffer overrun problem. バッファー オーバーランは、システムを攻撃するときによく使用される方法であり、その結果、認められていない権限が昇格されます。Buffer overrun problems are a frequent method of system attack, resulting in an unwarranted elevation of privilege. 詳しくは、「 バッファー オーバーランの回避」をご覧ください。For more information, see Avoiding Buffer Overruns. これらの関数のセキュリティを強化したバージョンについては、「_splitpath_s、_wsplitpath_s」をご覧ください。More secure versions of these functions are available; see _splitpath_s, _wsplitpath_s.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tsplitpath_tsplitpath _splitpath_splitpath _splitpath_splitpath _wsplitpath_wsplitpath

完全なパスの各コンポーネントが別々 のバッファーに格納されています。マニフェスト定数 _MAX_DRIVE_MAX_DIR_MAX_FNAME、および _MAX_EXT (STDLIB で定義されています。H) ファイルの各コンポーネントの最大サイズを指定します。Each component of the full path is stored in a separate buffer; the manifest constants _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, and _MAX_EXT (defined in STDLIB.H) specify the maximum size for each file component. 対応するマニフェスト定数よりも大きいファイル コンポーネントでは、ヒープ破損が発生します。File components that are larger than the corresponding manifest constants cause heap corruption.

各バッファーは、バッファー オーバーランの発生を回避するために、対応するマニフェスト定数と同じ大きさである必要があります。Each buffer must be as large as its corresponding manifest constant to avoid potential buffer overrun.

マニフェスト定数の値を次の表に示します。The following table lists the values of the manifest constants.

名前Name [値]Value
_MAX_DRIVE_MAX_DRIVE 33
_MAX_DIR_MAX_DIR 256256
_MAX_FNAME_MAX_FNAME 256256
_MAX_EXT_MAX_EXT 256256

完全なパスにコンポーネント (たとえば、filename) が含まれていない場合 _splitpath対応するバッファーに文字列を空に割り当てます。If the full path does not contain a component (for example, a filename), _splitpath assigns empty strings to the corresponding buffers.

渡すことができますNULL_splitpath以外の任意のパラメーターのパスする必要はありません。You can pass NULL to _splitpath for any parameter other than path that you do not need.

場合パスNULLで説明されているとおり、無効なパラメーター ハンドラーが呼び出されますパラメーターの検証です。If path is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 続けるには、実行が許可された場合errnoに設定されているEINVAL 、関数を返しますEINVALします。If execution is allowed to continue, errno is set to EINVAL and the function returns EINVAL.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_splitpath_splitpath <stdlib.h><stdlib.h>
_wsplitpath_wsplitpath <stdlib.h> または <wchar.h><stdlib.h> or <wchar.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

_makepath」の例をご覧ください。See the example for _makepath.

関連項目See also

ファイル処理File Handling
_fullpath、_wfullpath_fullpath, _wfullpath
_getmbcp_getmbcp
_makepath、_wmakepath_makepath, _wmakepath
_setmbcp_setmbcp
_splitpath_s、_wsplitpath_s_splitpath_s, _wsplitpath_s