嗨,在我的項目中,我必須讀取一個.bin文件,其中包含short(16 bit values)
形式的傳感器數據。我正在使用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()(十六進制值):
temp.bin:
01 02 03 04 05 06 e1 8e 88 06 ef bf b6 0b...
後,我做
stdout:
Result
0
914
-28
-28714
-32557
1
512
-32557
908
914
你嘗試過關閉然後重新打開該文件?如果您寫入文件並立即讀取,我不確定文件的內容。您可能必須先關閉它才能確保數據被刷新?另外,請確保打開它以便第二次讀取... – aardvarkk 2012-02-07 16:35:17