_splitpath, _wsplitpath
stdlib.h:インデックス への移動
ヘッダーファイル
stdlib.h
カテゴリ
ディレクトリ制御ルーチン
プロトタイプ
void _splitpath(const char *path, char *drive, char *dir, char *name, char *ext);
void _wsplitpath(const wchar_t *path, wchar_t *drive, wchar_t *dir, wchar_t *name, wchar_t *ext);
説明
絶対パス名を構成要素に分割します。
_splitpath は,ファイルの絶対パス名(path)を次の形式の文字列として受け取ります。
X:\DIR\SUBDIR\NAME.EXT
次に,パスを 4 つの部分に分割します。次に,これらの構成要素を drive,dir,name,および ext が指す文字列に格納します。5 つすべての構成要素を渡す必要があります。ただし,それらはヌルでもかまいません。その場合,ヌルの構成要素は解析されますが,格納されません。これらの文字列の最大サイズは,定数 _MAX_DRIVE,_MAX_DIR,_MAX_PATH,_MAX_FNAME,および _MAX_EXT(stdlib.h で定義)で指定されます。各サイズには,ヌルターミネータのスペースが含まれます。これらの定数は stdlib.h で定義されています。
|
_MAX_PATH |
パス |
|
_MAX_DRIVE |
ドライブ(コロン : を含む) |
|
_MAX_DIR |
ディレクトリ(前後に円記号 \ を含む) |
|
_MAX_FNAME |
名前 |
|
_MAX_EXT |
拡張子(前にドット . を含む) |
_splitpath は,ヌルでない各構成要素を格納できる十分な容量があると仮定します。
_splitpath は,path を分割するときに区切り文字を次のように扱います。
- drive はコロンを含む(「C:」,「A:」,など)
- dir は前後に円記号を含む(「\BC\include\」,「\source\」など)
- name はファイル名を含む
- ext は拡張子の前にドットを含む(「.C」,「.EXE」など)
_makepath と _splitpath の機能は反対です。パスを _splitpath で分割した場合は,分割された構成要素を _makepath でマージすると,パスが作成されます。
戻り値
なし。
例
#include <dir.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char s[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char file[_MAX_FNAME];
char ext[_MAX_EXT];
/* 現在の作業ディレクトリを取得します */
getcwd(s,_MAX_PATH);
if (s[strlen(s)-1] != '\\')
/* 末尾の \ 文字を追加します */
strcat(s,"\\");
/* 文字列を個別の要素に分解します */
_splitpath(s,drive,dir,file,ext);
strcpy(file,"DATA");
strcpy(ext,".TXT");
/* 要素を 1 つの文字列にマージします */
_makepath(s,drive,dir,file,ext);
/* 結果の文字列を表示する */
puts(s);
return 0;
}
移植性
| POSIX | Win32 | ANSI C | ANSI C++ | |
|---|---|---|---|---|
|
_splitpath |
+ |
|||
|
_wsplitpath |
+ |