[PR]

パス名から拡張子の開始位置を取得する

戻る

 パス名から、拡張子の開始位置を取得する関数を作る。

//*********************************************************
// パス名から、拡張子の開始位置を取得する
// ファイル名の末尾からファイル名の最後の '.' までを、拡張子と判断する
//*********************************************************
char *GetFileExtension( const char *PathName )
{
	char *p;
	char *tail;

	tail = strtail( PathName );
	for( p = tail; p >= PathName; p-- ) // 文字列の最後から最初まで
	{
		if ( ('\\'==*p) && !isJMS(PathName,p-PathName) )
			return tail; // ファイル名はここまで

		if ( '.' == *p )
			return p+1; // '.' を発見
	}
	return tail; // 拡張子なし
}//GetFileExtension

使用例

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

	test_GetFileExtension( "" );
	test_GetFileExtension( "." );
	test_GetFileExtension( "\\" );
	test_GetFileExtension( "拡張子.あり" );
	test_GetFileExtension( "拡張子なし" );
	test_GetFileExtension( "拡張子.ではない\\拡張子なし" );
	test_GetFileExtension( "2バイト目の¥の検査.ソ十能表" );

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

実行結果

[] => []
[.] => []
[\] => []
[拡張子.あり] => [あり]
[拡張子なし] => []
[拡張子.ではない\拡張子なし] => []
[2バイト目の¥の検査.ソ十能表] => [ソ十能表]

関連

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



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

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

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