Fwrite

fwriteは、C言語の標準入出力ヘッダー <stdio.h> で宣言されている関数である。
主に、バイナリ形式のファイル出力に使われる。
形式.
ISO/IEC 9899:1999 では、以下のように定義されている。
size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);
ISO/IEC 9899:2018 でも同様である。
テキストモード.
codice_5がテキストモードで開かれていた場合、改行コードLFは書き込みの際にCR+LFで置換される処理系もある。詳細は各処理系のリファレンスを参照のこと。
コード例.
ユーザーの入力を受け取り、バイナリモードで sample.dat に書き込んだ後、読み込んで表示する。
static void printDoubleAsBigEndianHexBytes(double x) {
 unsigned char buf[sizeof(double)];
 size_t i;
 memcpy(buf, &x, sizeof(double));
 printf("0x");
 for (i = 0; i < sizeof(double); ++i) {
 printf("%02x", buf[i]);
 puts("");
int main(void) {
 const char* const fileName = "sample.dat";
 FILE* fp;
 double v;
 size_t len;
 puts("Input a real number:");
 if (scanf("%lf", &v) != 1) {
 fprintf(stderr, "Failed to read a number from stdin.\n");
 return -1;
 printDoubleAsBigEndianHexBytes(v);
 /* ファイルへの書き込み */
 fp = fopen(fileName, "wb");
 if (fp == NULL) {
 fprintf(stderr, "Cannot open \"%s\" in write mode.\n", fileName);
 return -1;
 len = fwrite(&v, sizeof(double), 1, fp); 
 if (len != 1) {
 fclose(fp);
 fprintf(stderr, "Failed to write to \"%s\".\n", fileName);
 return -1;
 fclose(fp);
 /* ファイルからの読み込み */
 fp = fopen(fileName, "rb");
 if (fp == NULL) {
 fprintf(stderr, "Cannot open \"%s\" in read mode.\n", fileName);
 return -1;
 len = fread(&v, sizeof(double), 1, fp);
 if (len != 1) {
 fclose(fp);
 fprintf(stderr, "Failed to read from \"%s\".\n", fileName);
 return -1;
 fclose(fp);
 printf("Read value: %f\n", v);
 printDoubleAsBigEndianHexBytes(v);
 return 0;
なお、標準Cの言語仕様では、の結果は規定されていない。の値がIEEE 754準拠の倍精度浮動小数点数表現であることも規定されておらず、エンディアンも規定されていない。そのため、上記のコードによって生成されたバイナリファイルが、異なるプラットフォームでも同じように読み込めるとは限らない。