2016-04-02 18 views
-2

私の教授は、バイナリファイルの読み書きにサイズを使用しないように教えてくれました。今、彼は私に理由を教えたが、私はそれを忘れてしまった。例:代わりにCファイルでsizeof(double)を使用しないでください。

double grade; 

fread(grade, sizeof(double), 1, fp) != 1 

しかし、:

fread(grade, 4, 1, fp) != 1 

さて、トリックは、二重の4つのまたは8バイトかもしれないということですので、一つは、このような状況で何をするのでしょうか?

+1

IMO最初のものはシステムに依存しませんが、2番目のものはありません – Pooya

+1

'fread'の最初のパラメータはポインタです。 –

+1

私はあなたが 'fread(&grade ...')を意味したと思っています。なぜ彼はそれを言うのだろうと思うことはできません –

答えて

2

sizeof(grade)を使用することをお勧めします。これは、変数タイプを変更すると、この行は正常に機能するためです。おそらく彼はそれを言うだろうか?

fread(&grade, sizeof(grade), 1, fp) 

しかし、別のシステムでは機能しない可能性があるため、値を直接書き込む理由はありません。

関連する問題