関数CKfread マニュアル

(The documentation of function CKfread)

Last Update: 2022/10/31


◆機能・用途(Purpose)

関数fread(ファイルからのバイナリデータの読み込み)をエラーチェック付きで実行する。
Call function fread (reading a binary data from a file) with error checks.


◆形式(Format)

#include <functions_with_errcheck.h>
inline void CKfread(void ∗ptr,int size,int n,FILE ∗stream)


◆引数(Arguments)

ptr データの代入先の先頭アドレス。 変数型はvoid型でなくても良い。 第3引数(n)≥2の場合には 必要な長さの配列としてメモリ確保を済ませたものを与えること。
The first address to which the data is to be inserted. The variable type may not be void-type. If the 3rd argument (n) is greater than or equal to 2, use an array whose memory for the necessary length has been preserved.
size 読み込むデータ型の1データあたりのサイズ(バイト数)。
The size (the number of bytes) of each data for the data type to read.
n 読み込むデータ数。
The number of data to read.
stream 読み込むファイルのファイルポインタ。
The file pointer of the file to read.


◆動作とエラーチェック (Behaviour and error checks)

下表で桃色のセルがエラー処理を表す。
The pick colored cells in the table below represent error checks.

条件
Condition
動作
Behaviour of the function
ptr=NULL プログラムをエラー終了する。
The program finishes as an error.
size≤0 プログラムをエラー終了する。
The program finishes as an error.
n≤0 プログラムをエラー終了する。
The program finishes as an error.
stream=NULL プログラムをエラー終了する。
The program finishes as an error.
読み込む前の時点で既にファイル末尾に達している(feof(stream)=1)。
The file end was reached before reading the data (feof(stream)=1).
プログラムをエラー終了する。
The program finishes as an error.
読み込み後の時点でファイル末尾に達していない(feof(stream)≠1) にも関わらず、関数freadの戻り値(読み込んだデータ数)<nとなった。
After reading the data, the file end did not appear (feof(stream)≠1) and nevertheless the return value of function fread (the number of data read) was less than n.
プログラムをエラー終了する。
The program finishes as an error.
上記以外の場合
The other cases
関数freadを用いてstreamからsizeバイトのデータをn個読み込み、 結果をptrに格納する。
Read n data of size bytes from stream using function fread, and store the result into ptr.


◆使用例(Example)

int single_variable_int;
double array_double[5];
char string[11];
FILE ∗fp=fopen("data.dat","rb");
CKfread(&single_variable_int,sizeof(int),1,fp);
CKfread(array_double,sizeof(double),5,fp);
CKfread(string,sizeof(char),10,fp);
string[10]=′\0′;
fclose(fp);