ホームに戻る 初歩のVC++Programming Tipsに戻る

初歩のVC++Programming Tips Win32SDK篇

フルパス名からファイル名を取り除くには


パス名の先頭から文字列を検索して,「:,\,/」のいずれかが最後に現れた地点のポインタに'\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;
}


copyright (c) 1998-2000 by T-Matsuo
ホームに戻る 初歩のVC++Programming Tipsに戻る