fwrite
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
| ヘッダ <stdio.h> で定義
|
||
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); |
(C99未満) | |
size_t fwrite( const void *restrict buffer, size_t size, size_t count, FILE *restrict stream ); |
(C99以上) | |
指定された配列 buffer から出力ストリーム stream に最大 count 個のオブジェクトを書き込みます。 オブジェクトは、 unsigned char の配列として各オブジェクトを再解釈し、それらの unsigned char を stream に順に書き込むために各オブジェクトに対して fputc を size 回呼んだかのように、書き込まれます。 ストリームのファイル位置指示子は書き込まれた文字数だけ進められます。
引数
| buffer | - | 書き込む配列の最初のオブジェクトを指すポインタ |
| size | - | 各オブジェクトのサイズ |
| count | - | 書き込むオブジェクトの数 |
| stream | - | 出力ストリームを指すポインタ |
戻り値
書き込みに成功したオブジェクトの数。 エラーが発生した場合は count より少なくなることがあります。
size または count がゼロの場合、 fwrite はゼロを返し、それ以外何の動作も行いません。
例
Run this code
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
enum { SIZE = 5 };
int main(void)
{
double a[SIZE] = {1, 2, 3, 4, 5};
FILE *f1 = fopen("file.bin", "wb");
assert(f1);
size_t r1 = fwrite(a, sizeof a[0], SIZE, f1);
printf("wrote %zu elements out of %d requested\n", r1, SIZE);
fclose(f1);
double b[SIZE];
FILE *f2 = fopen("file.bin", "rb");
size_t r2 = fread(b, sizeof b[0], SIZE, f2);
fclose(f2);
printf("read back: ");
for(size_t i = 0; i < r2; i++)
printf("%f ", b[i]);
}
出力:
wrote 5 elements out of 5 requested
read back: 1.000000 2.000000 3.000000 4.000000 5.000000
参考文献
- C11 standard (ISO/IEC 9899:2011):
- 7.21.8.2 The fwrite function (p: 335-336)
- C99 standard (ISO/IEC 9899:1999):
- 7.19.8.2 The fwrite function (p: 301-302)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.9.8.2 The fwrite function
関連項目
(C99)(C11)(C11)(C11)(C11) |
stdout、ファイルストリームまたはバッファに書式付き出力を書き出します (関数) |
| ファイルストリームに文字列を書き込みます (関数) | |
| ファイルから読み込みます (関数) | |
fwrite の C++リファレンス
|