C 言語でファイルに書き込む

  1. C 言語でファイルに書き込むには fwrite 関数を使用する
  2. C 言語でファイルに書き込むには write 関数を使用する

この記事では、C 言語でファイルに書き込む方法について複数の方法を示します。

C 言語でファイルに書き込むには fwrite 関数を使用する

C 言語の標準 I/O ライブラリには、ファイルを読み書きするためのコア関数である freadfwrite が用意されています。fwrite は 4つの引数、データを取得するためのポインタ void、指定されたポインタのデータ要素のサイズと数、出力ファイルストリームのためのポインタ FILE* です。

ファイルストリームはまず fopen 関数で開かれなければならないことに注意してください。この場合、読み書きのためにファイルを開くには w+ モードを使用します。ただし、ファイルが存在しない場合は、与えられた名前で新しいファイルが作成されることに注意してください。次に、返されたファイルストリームポインタが有効かどうかをチェックします。そうでない場合、それは対応するエラーメッセージを表示し、プログラムを終了します。ファイルストリームポインタが有効であることが確認できたら、fwrite 関数を呼び出すことができます。プログラムが終了する前に fclose 関数を使ってファイルを閉じるべきであることに注意してください。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const char *str = "Temporary string to be written to file!";

int main(void) {
    const char* filename = "out.txt";

    FILE* output_file = fopen(filename, "w+");
    if (!output_file) {
        perror("fopen");
        exit(EXIT_FAILURE);
    }

    fwrite(str, 1, strlen(str), output_file);
    printf("Done Writing!\n");

    fclose(output_file);
    exit(EXIT_SUCCESS);
}

C 言語でファイルに書き込むには write 関数を使用する

これは POSIX に準拠した関数呼び出しであり、ファイルディスクリプタで参照されるファイルに指定されたバイト数を書き込む。ファイルディスクリプタはオープンされたファイルストリームに関連付けられた整数であることに注意してください。ディスクリプタを取得するには、ファイル名のパスを指定して open 関数を呼び出す必要があります。関数 write は第 1 引数にファイルディスクリプタを、第 2 引数に void* で指定されたデータのバッファを取る。第 3 引数はファイルに書き込むバイト数であり、以下の例では strlen 関数を用いて計算します。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>

const char *str = "Temporary string to be written to file!";

int main(void) {
    const char* filename = "out.txt";

    int fd = open(filename, O_WRONLY);
    if (fd == -1) {
        perror("open");
        exit(EXIT_FAILURE);
    }

    write(fd, str, strlen(str));
    printf("Done Writing!\n");

    close(fd);
    exit(EXIT_SUCCESS);
}

関連記事 - C File

  • C 言語でファイルを読む
  • C 言語の dup2 関数