Xin chào trong dự án của tôi Tôi đã đọc tệp .bin có dữ liệu cảm biến ở dạng short(16 bit values)
. Tôi đang làm điều này bằng cách sử dụng chức năng fread
vào bộ đệm, nhưng tôi cảm thấy rằng việc đọc không diễn ra chính xác. Tôi có nghĩa là không có sự nhất quán giữa những gì tôi viết và những gì tôi đọc. Các bạn có thể đề xuất những gì đang xảy ra ở đây không? Đây không phải là mã của tôi từ dự án của tôi ... Tôi chỉ đang cố gắng xác minh các chức năng fread
và fwrite
tại đây.Làm thế nào để sử dụng các hàm fread và fwrite để đọc và ghi các tệp nhị phân?
#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)
}
Sau khi tôi làm fread() (giá trị HEX):
temp.bin:
01 02 03 04 05 06 e1 8e 88 06 ef bf b6 0b...
Sau khi tôi làm fwrite()
stdout:
Result
0
914
-28
-28714
-32557
1
512
-32557
908
914
Các bạn đã cố gắng đóng cửa và sau đó mở lại tập tin? Tôi không chắc nội dung của một tệp là gì nếu bạn viết cho nó và sau đó đọc nó ngay lập tức. Bạn có thể phải đóng nó trước để đảm bảo dữ liệu bị xóa? Ngoài ra, hãy chắc chắn rằng bạn mở nó để đọc lần thứ hai xung quanh ... – aardvarkk