【C言語】ファイルの拡張子だけを変更する方法

この記事では、C言語を使用してファイルの拡張子を変更する方法を紹介します。

具体的には、ファイル名の部分を取得し、新しい拡張子と連結してファイル名を変更する手順を解説します。

初心者の方でもわかりやすく、具体的なサンプルコードを交えて説明します。

目次から探す

ファイルの拡張子を変更する方法

ファイルの拡張子を変更する方法について説明します。

具体的な手順は以下の通りです。

ファイル名の部分を取得する

まず、ファイル名の部分を取得する必要があります。

ファイル名には拡張子が含まれているため、拡張子を除いた部分を取得する必要があります。

以下のサンプルコードでは、strrchr関数を使用して、ファイル名の中で最後に現れるドット(.)の位置を取得しています。

その位置を基に、ファイル名の部分を抽出しています。


#include <stdio.h>
#include <string.h>
int main() {
    char filename[] = "sample.txt";
    char *extension = strrchr(filename, '.');
    if (extension != NULL) {
        // 拡張子を除いたファイル名を取得
        char basename[256];
        strncpy(basename, filename, extension - filename);
        basename[extension - filename] = '\0';
        printf("ファイル名の部分: %s\n", basename);
    }
    return 0;
}

上記のコードを実行すると、以下のような結果が得られます。

ファイル名の部分: sample

新しい拡張子と連結する

次に、新しい拡張子と連結します。

新しい拡張子は任意の文字列であり、元の拡張子とは異なる場合もあります。

以下のサンプルコードでは、新しい拡張子を .bak としています。

strcat関数を使用して、ファイル名の部分と新しい拡張子を連結しています。


#include <stdio.h>
#include <string.h>
int main() {
    char filename[] = "sample.txt";
    char *extension = strrchr(filename, '.');
    if (extension != NULL) {
        // 拡張子を除いたファイル名を取得
        char basename[256];
        strncpy(basename, filename, extension - filename);
        basename[extension - filename] = '\0';
        // 新しい拡張子と連結
        char new_filename[256];
        strcpy(new_filename, basename);
        strcat(new_filename, ".bak");
        printf("新しいファイル名: %s\n", new_filename);
    }
    return 0;
}

上記のコードを実行すると、以下のような結果が得られます。

新しいファイル名: sample.bak

ファイル名を変更する

最後に、ファイル名を変更します。

C言語では、ファイル名の変更には rename 関数を使用します。

以下のサンプルコードでは、rename 関数を使用して、元のファイル名を新しいファイル名に変更しています。


#include <stdio.h>
#include <string.h>
int main() {
    char filename[] = "sample.txt";
    char extension_new[] = ".bak";
    char *extension = strrchr(filename, '.');
    if (extension != NULL) {
        // 拡張子を除いたファイル名を取得
        char basename[256];
        strncpy(basename, filename, extension - filename);
        basename[extension - filename] = '\0';
        // 新しい拡張子と連結
        char new_filename[256];
        strcpy(new_filename, basename);
        strcat(new_filename, extension_new);
        // ファイル名を変更
        if (rename(filename, new_filename) == 0) {
            printf("ファイル名を変更しました。\n");
        } else {
            printf("ファイル名の変更に失敗しました。\n");
        }
    }
    return 0;
}

上記のコードを実行すると、以下のような結果が得られます。

ファイル名を変更しました。

以上が、ファイルの拡張子を変更する方法の手順です。

strrchr関数を使用してファイル名の部分を取得し、strcat関数を使用して新しい拡張子と連結します。

最後に、rename関数を使用してファイル名を変更します。

目次から探す