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