C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のfread()関数の使い方を徹底解説!パラメータとサンプルコード付き

fread()関数とは

C/C++の標準ライブラリ関数であるsize_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)は、指定されたストリームからデータを読み込み、ptrが指す配列に格納します。テキストファイルだけでなく、構造体や配列などのバイナリデータを読み込む際に特に便利な関数です。

fread()関数の宣言は以下の通りです。

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

パラメータの詳細

fread()関数が受け取る各パラメータの説明は以下の表の通りです。

パラメータ説明
ptr読み込んだデータを格納するメモリブロックへのポインタです。最低でも size*nmemb バイトのサイズが必要です。
size読み込む各要素のサイズ(バイト単位)です。
nmemb読み込む要素の数です。各要素のサイズは size バイトになります。
stream入力ストリームを指定するFILEオブジェクトへのポインタです。

戻り値について

正常に読み込まれた要素の総数が、整数型のsize_tオブジェクトとして返されます。この戻り値がnmembパラメータと異なる場合、エラーが発生したか、ファイルの終端(EOF)に達したことを意味します。どちらの状況かを判別するには、ferror()関数やfeof()関数を組み合わせて使用すると良いでしょう。

サンプルコード

#include <stdio.h>
#include <string.h>
int main () {
   FILE *fp;
   char c[] = "this is tutorialspoint";
   char buffer[100];
   /* 読み書き両用でファイルを開く */
   fp = fopen("file.txt", "w+");
   /* ファイルにデータを書き込む */
   fwrite(c, strlen(c) + 1, 1, fp);
   /* ファイルの先頭にシークする */
   fseek(fp, 0, SEEK_SET);
   /* データを読み込んで表示する */
   fread(buffer, strlen(c)+1, 1, fp);
   printf("%s\n", buffer);
   fclose(fp);
   return(0);
}

上記のプログラムをコンパイルして実行すると、file.txtというファイルが作成され、「this is tutorialspoint」という内容が書き込まれます。その後、fseek()関数を使ってファイルポインタを先頭に戻し、書き込んだ内容をfread()関数で読み込んで表示します。

実行結果

this is tutorialspoint

このように、fread()関数を使えば、ファイルから指定したサイズのデータをまとめて効率的に読み込むことができます。fwrite()関数と組み合わせることで、ファイルへの書き込みと読み込みを柔軟に制御できるため、バイナリファイルを扱うプログラムで広く活用されています。

  1. C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説

    swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s

  2. PHPのfread()関数の使い方を徹底解説!ファイル読み込みの基本と実践例

    fread()関数は、PHPで開いているファイルからデータを読み込むための組み込み関数です。読み込みは、ファイルの終端(EOF)に達した時点、または指定したバイト数に到達した時点のどちらか早い方で停止します。この関数はバイナリセーフ(バイナリデータにも対応)であるため、テキストファイルだけでなく画像などのバイナリファイルの読み込みにも利用できます。基本構文fread(file_pointer, length)パラメータの詳細file_pointer: fopen()関数を使って作成されたファイルポインタリソースを指定します。必須項目です。length: 読み込む最大バイト数を指定します。必須項