_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.

エイリアスdir
末尾のスラッシュを含むディレクトリ パス。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_DIR_MAX_FNAME、および stdlib.h> で定義されている)。 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
ドライブ (_S)_MAX_DRIVE 33
_MAX_DIR_MAX_DIR 256256
_MAX_FNAME_MAX_FNAME 256256
拡張 (_S)_MAX_EXT 256256

完全なパスにコンポーネント (たとえばファイル名) が含まれていない場合、 _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.

PathNULLの場合は、「パラメーターの検証」で説明されているように、無効なパラメーターハンドラーが呼び出されます。If path is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、 errnoeinvalに設定され、関数は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