C 言語でファイルに書き込む
この記事では、C 言語でファイルに書き込む方法について複数の方法を示します。
C 言語でファイルに書き込むには fwrite
関数を使用する
C 言語の標準 I/O
ライブラリには、ファイルを読み書きするためのコア関数である fread
と fwrite
が用意されています。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 <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.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);
}