構造変数を作成し、関数fwrite
を使用してファイルに書き込むプログラムを作成しました。返されるコードは1です(私は構造変数を1つだけ書きました)。 fread
関数を使ってファイルを読み込もうとすると、0
が返され、変数は完全には埋められません。Windowsでfwrite/freadがうまく動作しない
この問題は、Windows専用です。 Linux(Ubuntu仮想マシン)で同じコードを試してみましたが、うまくいきました。ここで
は構造体である:
struct MyStruct
{
char comment[40];
int nbpts;
float time[4096];
float value[4096];
};
FILE* fp = fopen(fileTrace, "w");
fwrite(&var, sizeof(struct MyStruct), 1, fp);
fread(&var, sizeof(struct MyStruct), 1, fp);
任意のアイデア?そうfwrite
/fread
は、任意のファンキーな文字変換(例えば、プラットフォーム固有の行末用をしない、
fopen(..., "w+")
をそして、あなたはバイナリモードでそれを開く必要があります。
これらの関数の戻り値はチェックしていません。また、Windosはバイナリの解釈を抑止するためにバイナリファイルを "wb"/"rb"として開くことを好みます。 – tofro
ポインタを読み込みのために移動する 'fseek'関数はどうでしょうか? – tilz0R
'fwrite'と' fread'の間で読み込むためにファイルを閉じて再オープンする必要があります。そうしないと、ファイルを書き込み専用モードで開いたので、ファイル*と* –