関数リファレンス (アルファベット順)


ランタイム ライブラリ リファレンス
_splitpath_s、_wsplitpath_s

パス名を構成要素に分解します。_splitpath、_wsplitpath には、「CRT のセキュリティ強化」に説明されているように、セキュリティが強化されたバージョンがあります。

errno_t _splitpath_s(
   const char * path,
   char * drive,
   size_t driveNumberOfElements,
   char * dir,
   size_t dirNumberOfElements,
   char * fname,
   size_t nameNumberOfElements,
   char * ext, 
   size_t extNumberOfElements
);
errno_t _wsplitpath_s(
   const wchar_t * path,
   wchar_t * drive,
   size_t driveNumberOfElements,
   wchar_t *dir,
   size_t dirNumberOfElements,
   wchar_t * fname,
   size_t nameNumberOfElements,
   wchar_t * ext,
   size_t extNumberOfElements
);
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _splitpath_s(
   const char *path,
   char (&drive)[drivesize],
   char (&dir)[dirsize],
   char (&fname)[fnamesize],
   char (&ext)[extsize]
); // C++ only
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _wsplitpath_s(
   const wchar_t *path,
   wchar_t (&drive)[drivesize],
   wchar_t (&dir)[dirsize],
   wchar_t (&fname)[fnamesize],
   wchar_t (&ext)[extsize]
); // C++ only

パラメータ

[入力] path

完全パス

[出力] drive

ドライブを表す文字 (省略可能)。後ろにコロン (:) を付けます。

[入力] driveNumberOfElements

drive バッファのサイズ (1 バイト文字またはワイド文字の数)。

[出力] dir

ディレクトリ パスと末尾のスラッシュ (省略可能)。区切り記号にはスラッシュ (/ ) および円記号 (\) を使用でき、両方を混在させることもできます。

[入力] dirNumberOfElements

dir バッファのサイズ (1 バイト文字またはワイド文字の数)。

[出力] fname

ベース ファイル名 (拡張子なし)。

[入力] nameNumberOfElements

fname バッファのサイズ (1 バイト文字またはワイド文字の数)。

[出力] ext

ファイル名の拡張子 (省略可能)。先頭にピリオド (.) が付きます。

[入力] extNumberOfElements

ext バッファのサイズ (1 バイト文字またはワイド文字の数)。

戻り値

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。

エラー条件
条件 戻り値

path NULL

EINVAL

driveNULLdriveNumberOfElements がゼロ以外

EINVAL

driveNULL 以外、driveNumberOfElements がゼロ

EINVAL

dirNULLdirNumberOfElements がゼロ以外

EINVAL

dirNULL 以外、dirNumberOfElements がゼロ

EINVAL

fnameNULLnameNumberOfElements がゼロ以外

EINVAL

fnameNULL 以外、nameNumberOfElements がゼロ

EINVAL

extNULLextNumberOfElements がゼロ以外

EINVAL

extNULL 以外、extNumberOfElements がゼロ

EINVAL

上記のいずれかの条件が発生すると、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、これらの関数は errnoEINVAL に設定し、EINVAL を返します。

バッファが短すぎて結果を保存できない場合、この関数はすべてのバッファを消去して空の文字列にし、errnoERANGE に設定し、ERANGE を返します。

解説

_splitpath_s 関数は、パスを 4 つのコンポーネントに分割します。_splitpath_s は、現在使用しているマルチバイト コード ページに基づいて自動的にマルチバイト文字列の引数を適宜処理して、マルチバイト文字シーケンスを認識します。_wsplitpath_s _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_s の実行が完了すると、path に存在しない構成要素については、これらの引数に空の文字列が入ります。不要な構成要素については、_splitpath_s NULL ポインタを渡すことができます。

C++ では、テンプレートのオーバーロードによってこれらの関数を簡単に使用できます。オーバーロードでは、バッファ長を自動的に推論できるため、サイズ引数を指定する必要がなくなります。詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。

これらの関数のデバッグ バージョンは、最初にバッファを 0xFD で埋めます。この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。

必要条件

ルーチン 必須ヘッダー 互換性

_splitpath_s

<stdlib.h>

Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition、Windows NT 4.0、Windows 2000、Windows XP Home Edition、Windows XP Professional、Windows Server 2003

_wsplitpath_s

<stdlib.h> または <wchar.h>

Windows NT 4.0、Windows 2000、Windows XP Home Edition、Windows XP Professional、Windows Server 2003

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

_makepath_s、_wmakepath_s 関数の例を参照してください。

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

関連項目

ファイル処理
_splitpath、_wsplitpath
_fullpath、_wfullpath
_getmbcp
_makepath、_wmakepath
_setmbcp

タグ :


Page view tracker