[PR]

パス名からファイル名の開始位置を取得する

戻る

 パス名から、ファイル名の開始位置を取得する関数を作る。

//*********************************************************
// パス名から、ファイル名の開始位置を取得する
// パス名の末尾からパス名最後の '\' までを、ファイル名と判断する
//*********************************************************
char *GetFileName( const char *PathName )
{
	for( char *p = strtail(PathName); p >= PathName; p-- ) // 文字列の最後から最初まで
	{
		if ( ('\\'==*p) && !isJMS(PathName,p-PathName) )
			return p+1;
	}
	return (char *)PathName; // 文字列に '\' は含まれていなかった
}//GetFileName

使用例

// 関数 GetFileName() の使用例です。
int main( void )
{
#define test_GetFileName(filename)  printf( "[%s] => [%s]\n", filename, GetFileName(filename) ) 

	test_GetFileName( "" );
	test_GetFileName( "\\" );
	test_GetFileName( "ファイル名のみ" );
	test_GetFileName( "ディレクトリ名のみ\\" );
	test_GetFileName( "ディレクトリと\\ファイル名" );
	test_GetFileName( "2バイト目の¥の検査\\ソ十能表" );

	return 0;
#undef test_GetFileName // #define test_GetFileName(filename)
}//main

実行結果

[] => []
[\] => []
[ファイル名のみ] => [ファイル名のみ]
[ディレクトリ名のみ\] => []
[ディレクトリと\ファイル名] => [ファイル名]
[2バイト目の¥の検査\ソ十能表] => [ソ十能表]

関連

パス名から拡張子の開始位置を取得する
2バイト目に \(0x5c) を含む文字
シフトJIS文字列の文字検索


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
IDGは全世界85カ国でIT関連雑誌を発行する出版社です。