メイン画像

C言語 - ファイルの拡張子を取得する

C言語 - ファイルの拡張子を取得する


ファイルを読み取るとき、拡張子を条件にすることも多い。

拡張子を取得する GetExtensionName のような関数が、C言語の標準関数にないだろうかと思ったが、やっぱりなかった。

自作するしかなさそうである。

 

拡張子を取得するには、ファイル名に現れる最後のドット(.)の位置が分かれば良い。

最後のドットの位置からファイル名の末尾までが拡張子だ。

文字列の最後から特定の文字を検索するには strrchr 関数を使う。

strrchr 関数は引数の文字列の最後から指定された文字を検索する。

文字を発見した場合はそのポインターを返すし、見つけれらなかった場合は NULL ポインターを返す。

strrchr 関数は以下のように使う。

char *extension = strrchr("path/to/file.txt", '.');

 

次のプログラムは、ファイル名の拡張子に応じたメッセージを出力する。

  • 拡張子が取得できない場合は「拡張子なしのファイル」
  • 拡張子が “.txt” の場合は「テキストファイル」
  • 拡張子が “.txt” 以外の場合は「テキストファイル以外(拡張子:%s)」
    %s には取得した拡張子が出る。
    たとえば file.jpg なら「テキストファイル以外(拡張子:.jpg)」と表示される。
#include 
#include 

int main(int argc, char *argv[]) {
    if (argc == 1) {
        printf("ファイル名指定なし\n");
        return 0;
    }

    /* 拡張子を取得してメッセージを表示 */
    /* コマンドライン引数にはファイル名が指定されると想定して */
    char *extension = strrchr(argv[1], '.');
    if ( extension == NULL ) {
        printf("拡張子なしのファイル\n");
    } else if ( strcmp(extension, ".txt") == 0 ) {
        printf("テキストファイル\n");
    } else {
        printf("テキストファイル以外(拡張子:%s)\n", extension);
    }
}

アカウントを作成 して、もっと沢山の記事を読みませんか?


この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。


この記事にコメントをしてみませんか?


酒とアクアリウムが最近の楽しみ。

おすすめの記事