パス名から、拡張子の開始位置を取得する関数を作る。 //********************************************************* // パス名から、拡張子の開始位置を取得する // ファイル名の末尾からファイル名の最後の '.' までを、拡張子と判断する //********************************************************* 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バイト目の¥の検査.ソ十能表] => [ソ十能表] 関連 |
|