C言語でファイルの一部を編集する方法

C言語では、fseek関数とfwrite関数を使用してファイルの一部を書き換えることができます。

まず、修正するファイルはfopen関数で開き、モードをrb+に指定し、二進数読み書きモードで開く

次に、fseek関数でファイルポインタが必要な位置に移動させます。fseek関数は3つの引数を持っています。1つ目の引数はファイルポインタ、2つ目の引数はオフセット(移動させるバイト数)、3つ目の引数はオフセットの開始位置で、SEEK_SET(ファイルの頭からのオフセット)、SEEK_CUR(現在の位置からのオフセット)、SEEK_END(ファイルの末尾からのオフセット)のいずれかです。

続いて、fwrite関数を使用して、変更された内容をファイルに書き込みます。fwrite関数は4つの引数を取り、1つめの引数は書き込まれるデータへのポインタ、2つめの引数は各データ項目のサイズ(バイト単位)、3つめの引数は書き込まれるデータの数、4つめの引数はファイルポインタです。

最後に fclose 関数でファイルをクローズします。

サンプルコードを次に示します。

#include <stdio.h>

int main() {
    FILE *file;
    char data[100];

    // 打开文件
    file = fopen("example.txt", "rb+");

    // 定位到需要修改的位置
    fseek(file, 10, SEEK_SET);

    // 修改内容
    sprintf(data, "New Content");

    // 写入文件
    fwrite(data, sizeof(char), strlen(data), file);

    // 关闭文件
    fclose(file);

    return 0;
}

例に示したコードでは、「example.txt」という名前のファイルが開かれ、ファイルポインタは10番目のバイトの位置に位置付けられ、文字列「New Content」がファイルに書き込まれます。

bannerAds