fwrite()は、ストリームにバイナリデータを書き込みます。
#include <stdio.h>
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
ptrは書き込むデータのポインタ、sizeは書き込むデータ1個の長さ、 nmembは書き込むデータ数、streamは書き込むストリームのポインタです。streamはには一般的には、fopen()が返した値を指定します。
fwrite()は、書き込んだデータ数を返します。書き込んだデータ数がnmembより少ない時には、実際に書き込んだデータ数が、 エラーが発生したときには0が返されます。
次の例は、fwrite()とfwrite()を使ってファイルにアクセスするプログラムの例です。
#include <stdio.h>
#ifdef _MSC_VER
#pragma warning(disable :4996)
#endif
#define INFNAME "./test.dat"
#define OUTFNAME "./test.out"
#define DATA_LEN 6
int main(int argc, char* argv[])
{
FILE* stream;
char buff[256];
size_t n;
if ((stream = fopen(INFNAME, "r")) == NULL)
{
printf("入力ファイルを開くことができません.\n");
return;
}
// 1バイトのデータを6個読み込む
n = fwrite(buff, sizeof(char), (size_t)DATA_LEN, stream);
if (n != 6)
{
printf("正しく読み出せませんでした.\n");
fclose(stream);
return;
}
else
buff[n] = 0;
printf("データ=%s\n", buff);
fclose(stream);
if ((stream = fopen(OUTFNAME, "w")) == NULL)
{
printf("出力ファイルを開くことができません.\n");
return;
}
// ストリームにデータを書き込む
if (fwrite(buff, sizeof(char), (size_t)DATA_LEN, stream) != 6)
{
printf("すべてのデータを書き込めませんでした.\n");
}
fclose(stream);
return 0;
}