私のプロジェクトでは、センサーデータがshort(16 bit values)
という形の.binファイルを読みました。私はバッファにfread
の機能を使ってこれをやっていますが、読み込みが正しく行われていないと感じています。私はを書いているものと私が読んだものとの間に一貫性がないことを意味します。あなたはここで間違っていることを提案できますか?これは私のプロジェクトのコードではありません。ここではfread
とfwrite
の機能を確認しようとしています。fread関数とfwrite関数を使用してバイナリファイルを読み書きする方法はありますか?
#include<stdio.h>
void main()
{
FILE *fp = NULL;
short x[10] = {1,2,3,4,5,6,5000,6,-10,11};
short result[10];
fp=fopen("c:\\temp.bin", "wb");
if(fp != NULL)
{
fwrite(x, 2 /*sizeof(short)*/, 10 /*20/2*/, fp);
rewind(fp);
fread(result, 2 /*sizeof(short)*/, 10 /*20/2*/, fp);
}
else
exit(0);
printf("\nResult");
printf("\n%d",result[0]);
printf("\n%d",result[1]);
printf("\n%d",result[2]);
printf("\n%d",result[3]);
printf("\n%d",result[4]);
printf("\n%d",result[5]);
printf("\n%d",result[6]);
printf("\n%d",result[7]);
printf("\n%d",result[8]);
printf("\n%d",result[9]);
fclose(fp)
}
私は関数fread()(HEX値)を実行した後:
temp.bin:
01 02 03 04 05 06 e1 8e 88 06 ef bf b6 0b...
を私はfwriteの操作を行うと()
stdout:
Result
0
914
-28
-28714
-32557
1
512
-32557
908
914
あなたがクローズし、ファイルを再オープンしようとしたことがありますか?ファイルに書き込んですぐに読み込むと、ファイルの内容が何であるか分かりません。最初にデータを閉じて、データがフラッシュされるようにする必要がありますか?また、2回目の読み取りのためにそれを開くようにしてください。 – aardvarkk