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

解説Remarks

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

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.

汎用テキスト ルーチンのマップ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> で定義されています。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

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

不要な パス 以外のパラメーターの _splitpathNULL を渡すことができます。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>
_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