fwrite() - 項目の書き込み

標準

標準/拡張機能 C/C++ 依存項目

ISO C
POSIX.1
XPG4
XPG4.2
C99
Single UNIX Specification、バージョン 3
Language Environment

両方  

形式

#include <stdio.h>

size_t fwrite(const void * __restrict__buffer, size_t size, size_t count, FILE * __restrict__stream);

#define _OPEN_SYS_UNLOCKED_EXT 1
#include <stdio.h>

size_t fwrite_unlocked(const void * __restrict__buffer, size_t size, 
                       size_t count, FILE * __restrict__stream);

機能説明

buffer で指された位置から、stream で指さ れたストリームへ、サイズ size の項目をカウントする ために書き込みます。

レコード入出力の出力のために fwrite() を使用するときは、size を 1、count を書き込まれるレコード長に設定します。レコード入出力を使用している場合は、一度に 1 レコードのみ書くことができます。レコード長より長いストリングは、レコード長に切り捨てられます。次の読み取りの前に、フラッシュまたは位置変更が必要です。

ブロック入出力の出力のために fwrite() を使用するときは、size を 1、count を書き込まれるブロック長に設定します。ブロック入出力を使用している場合は、一度に 1 ブロックのみ書き込むことができます。ブロック長より長いストリングは、ブロック長に切り捨てられます。

fwrite() は、出力をストリームに書き出す前に、その出力をバッファー に入れることがあります。このため、バッファーがストリームに書き出される ときに後続の fwrite() 呼び出しが失敗した場合、先行する fwrite() 呼び出し からのデータが失われることがあります。

fwrite() には、書き込みの直後に読み取り、または読み取りの直後に 書き込みを行うための書き込み操作と同じ制約事項があります。書き込みと後続の読み取りの間には、介入フラッシュまたは位置変更が 必要です。読み取りと後続の書き込みの間でも、EOF に達していない限り、介入フラッシュまたは位置変更が必要です。

fwrite_unlocked() は、スレッド・セーフでないことを除いて、機能的に fwrite() と 等価です。この関数をマルチスレッドのアプリケーション内で安全に使用できるのは、 flockfile() 関数または ftrylockfile() 関数のどちらかへの呼び出しが成功した後のように、 呼び出しスレッドが (FILE*) オブジェクトを所有している間に、この関数を呼び出す場合だけです。

戻り値

fwrite() は、正常に書き込まれた項目数を戻します。

この数字は、書き込みエラーが発生した場合にのみ、count よりも小さくなります。

CELEBF51
⁄* CELEBF51                                      

   This example writes NUM long integers to a stream in binary                  
   format.                                                                      
   It checks that the &fopen. function is successful and that                   
   100 items are written to the stream.                                         
                                                                                
 *⁄                                                                             
#include <stdio.h>                                                              
#define  NUM  100                                                               
                                                                                
int main(void)                                                                  
{                                                                               
   FILE *stream;                                                                
   long list[NUM];                                                              
   int numwritten, number;                                                      
                                                                                
   if((stream = fopen("myfile.dat", "w+b")) != NULL )                           
   {                                                                            
     for (number = 0; number < NUM; ++number)                                   
       list[number] = number;                                                   
     numwritten = fwrite(list, sizeof(long), NUM, stream);                      
     printf("number of long characters written is %d¥n",numwritten);            
   }                                                                            
   else                                                                         
     printf("fopen error¥n");                                                   
}                                                                               

関連情報