Fread関数を使用する:読み取り可能なサイズは読み取り可能なものより大きい

StackOverflow https://stackoverflow.com//questions/10705158

  •  13-12-2019
  •  | 
  •  

質問

私は質問をしています:

ファイルを読むために仲間を使っています。

typedef struct {
    int ID1;
    int ID2;
    char string[256];
} Reg;

Reg *A = (Reg*) malloc(sizeof(Reg)*size);

size = FILESIZE/sizeof(Reg);

fread (A, sizeof(Reg), size, FILEREAD);
.

ループを使用して、この呼び出しを連続して呼び出して、ファイル全体を読むようにします。

ファイルの終わり近くに入ったとき、私は「サイズ」* sizeof(reg)を読むことができない、またはあなたがこの金額の半分を読むことだけが利用可能であるならば、私の配列Aで何が起こるのかを読んでください。完成しますか?関数はエラーを返しますか?

フレッドによるファイルの読み取り方法を知っていますか?

EDI1:厳密には、区分が正確ではない場合は、最後のビットの小さいファイルサイズを読んでいる場合、私は自分のベクトルのサイズが私のベクトルのサイズ変更を疑問に思います。動的より良いものを読み、または開発することができます。

他のヒント

fread() 読み込んだ要素の数を返します。したがって、fread()の戻り値を確認して、配列内の要素の数を有効にする必要があります。

エラーが発生したか、またはEOFがある場合は、短い項目数またはゼロを返します。この場合、feof() OND ferror()を使用して、どの条件が満たされるかを確認する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top