_splitpath、_wsplitpath
更新 : 2007 年 11 月
パス名を構成要素に分解します。これらの関数のセキュリティを強化したバージョンについては、「_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
ドライブを表す文字 (省略可能)。後ろにコロン (:) を付けます。dir
ディレクトリ パスと末尾のスラッシュ (省略可能)。区切り記号にはスラッシュ (/) および円記号 (\) を使用でき、両方を混在させることもできます。fname
ベース ファイル名 (拡張子なし)。ext
ファイル名の拡張子 (省略可能)。先頭にピリオド (.) が付きます。
解説
_splitpath 関数は、パスを 4 つのコンポーネントに分割します。_splitpath は、現在使用しているマルチバイト コード ページに基づいて自動的にマルチバイト文字列の引数を適宜処理して、マルチバイト文字シーケンスを認識します。_wsplitpath は _splitpath のワイド文字バージョンです。_wsplitpath の引数はワイド文字列です。それ以外では、これらの関数の動作は同じです。
セキュリティに関するメモ これらの関数は、バッファ オーバーランが原因で発生する可能性のある問題の影響を受けます。バッファ オーバーランは、システムを攻撃するときによく使用される方法であり、その結果、認められていない権限が昇格されます。詳細については、「Avoiding Buffer Overruns」を参照してください。これらの関数のセキュリティを強化したバージョンがあります。「_splitpath_s、_wsplitpath_s」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
各引数はバッファに格納されます。各バッファに必要な最大長は、STDLIB.H で定義されている記号定数 (manifest 定数) の _MAX_DRIVE、_MAX_DIR、_MAX_FNAME、および _MAX_EXT で指定します。その他の引数は、パスの要素を格納するバッファを指します。_splitpath の実行が完了すると、path に存在しない構成要素については、これらの引数に空の文字列が入ります。不要な構成要素については、_splitpath に NULL ポインタを渡すことができます。
path が NULL の場合は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、errno が EINVAL に設定され、関数から EINVAL が返されます。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「_makepath」の例を参照してください。
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。