 _splitpath関数は、パス名をドライブとパスとファイル名と拡張子に分解してくれます。
_splitpath関数は、パス名をドライブとパスとファイル名と拡張子に分解してくれます。
この関数のセキュリティ強化バージョンが_splitpath_s関数です。
VS2005以降でないと使えません。
stdlib.hが必要です。
errno_t _splitpath_s( const char * path, char * drive, size_t driveSizeInCharacters, char * dir, size_t dirSizeInCharacters, char * fname, size_t nameSizeInCharacters, char * ext, size_t extSizeInBytes );pathは、分解したい完全パスです。
driveは、ドライブ文字を格納するバッファです。
driveSizeInCharactersは、driveのサイズです。
dirは、ディレクトリパスを格納するバッファです。
dirSizeInCharactersは、dirのサイズです。
fnameは、ファイル名(拡張子なし)を格納するバッファです。
nameSizeInCharactersは、fnameのサイズです。
extは、拡張子(先頭にピリオドがつく)を格納するバッファです。
extSizeInBytesは、extのサイズです。
引数がたくさんあって面倒そうですが、使ってみると簡単です。 では、サンプルを見てみましょう。
ここでは、
C:\abc\def\mybook.txtを、分解することにします。注意すべき点はCでは「\」そのものは 「\\」で表す必要があることです。
/* splitpath01.c */
#include <stdio.h>
#include <stdlib.h>
int main()
{
	char *mypath = "C:\\abc\\def\\mybook.txt";
	char szDrive[8], szPath[64], szFName[32], szExt[8];
	_splitpath_s(mypath, szDrive, sizeof(szDrive), szPath, sizeof(szPath), szFName,
		sizeof(szFName), szExt, sizeof(szExt));
	printf("ドライブは%s\nパスは%s\nファイル名は%s\n拡張子は%s\n",
		szDrive, szPath, szFName, szExt);
	return 0;
}
実行結果は次のようになります。
 
Update Sep/05/2007 By Y.Kumei