fnsplit,_wfnsplit
dir.h:インデックス への移動
ヘッダーファイル
dir.h
カテゴリ
ディレクトリ制御ルーチン
プロトタイプ
int fnsplit(const char *path, char *drive, char *dir, char *name, char *ext);
int _wfnsplit(const wchar_t *path, wchar_t *drive, wchar_t *dir, wchar_t *name, wchar_t *ext );
説明
絶対パス名を構成要素に分割します。
fnsplit は,ファイルの絶対パス名(path)を X:\DIR\SUBDIR\NAME.EXT 形式の文字列で受け取り,4 つの構成要素に分割します。次に,これらの構成要素を drive,dir,name,および ext が指す文字列に格納します。5 つすべての構成要素を渡す必要があります。ただし,それらはヌルでもかまいません。その場合,ヌルの構成要素は解析されますが,格納されません。パスの構成要素がヌルの場合,その構成要素は,ヌルでない空の文字列になります。
これらの文字列の最大サイズは,定数 MAXDRIVE,MAXDIR,MAXPATH,MAXFILE,および MAXEXT(dir.h で定義)で指定されます。各サイズには,ヌルターミネータのスペースが含まれます。
fnsplit は,ヌルでない各構成要素を格納できる十分な容量があると仮定します。
- fnsplit は,path を分割するときに区切り文字を次のように扱います。
- drive はコロンを含む(「C:」,「A:」,など)
- dir は前後に円記号を含む(「\BC\include\」,「\source\」など)
- name はファイル名を含む
- ext は拡張子の前にドットを含む(「.C」,「.EXE」など)
fnmerge と fnsplit の機能は反対です。パスを fnsplit で分割した場合は,分割された構成要素を fnmerge でマージすると,パスが作成されます。
戻り値
fnsplit は,path 内に絶対パス名のどの構成要素があったかを示す整数(dir.h で定義されている 5 つのフラグの組み合わせ)を返します。これらのフラグと対応する構成要素は次のとおりです。
EXTENSION |
拡張子 |
FILENAME |
ファイル名 |
DIRECTORY |
ディレクトリ(およびサブディレクトリ) |
DRIVE |
ドライブ指定(dir.h を参照) |
WILDCARDS |
ワイルドカード(* または ?) |
例
#include <stdlib.h>
#include <stdio.h>
#include <dir.h>
int main(void)
{
char *s;
char drive[MAXDRIVE];
char dir[MAXDIR];
char file[MAXFILE];
char ext[MAXEXT];
int flags;
s=getenv("COMSPEC"); /* comspec 環境パラメータを取得します */
flags=fnsplit(s,drive,dir,file,ext);
printf("Command processor info:\n");
if(flags & DRIVE)
printf("\tdrive: %s\n",drive);
if(flags & DIRECTORY)
printf("\tdirectory: %s\n",dir);
if(flags & FILENAME)
printf("\tfile: %s\n",file);
if(flags & EXTENSION)
printf("\textension: %s\n",ext);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
fnsplit |
+ |
|||
_wfnsplit |
NT のみ |