fwrite( )とfread( )


   バイナリモードでは整数や浮動小数点の内部表現をそのまま出力します。たとえば、整数int型が2バイトの大きさであれば、15でも30,000でもすべて2文字分の幅で出力が行われることになります。すなわち、あるオブジェクトxの出力に必要な大きさは常にsizeof(x)となりますから、ファイルの大きさは一般にテキストモードより小さくなります。浮動小数点などをまったく精度を落とすことなく読み書きできるのが大きな特徴です(テキストモードで、fpritfによる出力を行うと、数値を目で見ることのできる文字の並びに変換して出力します。たとえば、整数30,000を出力する場合は少なくとも5文字分の幅で出力を行います。)

   バイナリデータの読み書きを行うときには、fwrite( )とfread( )を用います。
これらの関数は基本的にはバイト単位のファイル処理を実行します。しかし、入出力単位のデータサイズを指定できるのでブロック単位の入出力を行うことができます。たとえば、「int型データのブロックを5個読み書きしろ」と書くことができます。もちろん、char型や構造体型のデータのブロックを指定することもできます。

 

fwrite関数   「ファイルに指定したバイト長のデータを書き込む」

(仕様)
  
#include<stdio.h>
  
fwrite(*buffer,size,n,*fp)
   *buffer   
/*出力領域のアドレス*/
   size       
/*データ項目のバイト長*/
   n          
/*書き込む回数*/
   FILE *fp 
/*ファイルポインタ*/
(機能)
  
bufferを先頭とする、大きさsizeバイトのデータ最大n個をfpに書き込む

fread関数 「ファイルから指定したバイト長のデータを読み込む」

(仕様)
  
#include <stdio.h>
  
fread(*bufer,size,n,fp)
   *buffer  
/*入力領域のアドレス*/
   size       
/*データ項目のバイト長*/
   n           
/*読み込む回数*/
   FILE *fp  
/*ファイルポインタ*/
(機能)
  
fpの指す領域から大きさsizeバイトのデータ、最大n個をbufferを先頭とする領域に書き出す。

 


「基礎講座もくじへ」

「Q&Aもくじへ」

「つぎへ」