パス名の先頭から文字列を検索して,「:,\,/」のいずれかが最後に現れた地点のポインタに'\0'を代入することでファイル名を取り除きます。2バイト文字の考慮についてはフルパス名からファイル名を取得するにはを参照してください。
次のような関数を作ると便利です。
//////////////////////////////////////////////////////////////////////////////
//cutFileName
//パス名からファイル名を取り除く
//////////////////////////////////////////////////////////////////////////////
/*
引数: char *lpszPath ファイル名を含むパス名へのポインタ
(実行後、パス名からファイル名が切り離される)
戻り値:なし
*/
void cutFileName(char *lpszPath)
{
char *lpszEnd=lpszPath;
while(*lpszPath != '\0')
{
//2バイト文字の先頭はスキップ
if(IsDBCSLeadByte(*lpszPath) == 0)
{
if((*lpszPath == '\\') || (*lpszPath == '/') || (*lpszPath == ':'))
{
lpszEnd=lpszPath+1;
}
}
lpszPath=CharNext(lpszPath);
}
//パス名にファイルを含まなかった場合何もしない
if(lpszEnd == lpszPath)
{
return;
}
//パス名からファイル名を切り離す
*lpszEnd='\0';
return;
}