Witam w moim projekcie Muszę przeczytać plik .bin, który ma dane z czujników w postaci short(16 bit values)
. Robię to za pomocą funkcji fread
w buforze, ale uważam, że odczyt nie odbywa się poprawnie. Mam na myśli nie ma żadnej zgodności między tym, co piszę, a tym, co czytam. Czy możecie sugerować, co tu jest nie tak? To nie jest mój kod z mojego projektu ... Próbuję tylko sprawdzić funkcje fread
i fwrite
tutaj.Jak używać funkcji Fread i Fwrite do odczytywania i zapisywania plików binarnych?
#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)
}
Po robię fread() (Hex Values)
temp.bin:
01 02 03 04 05 06 e1 8e 88 06 ef bf b6 0b...
Po robię fwrite()
stdout:
Result
0
914
-28
-28714
-32557
1
512
-32557
908
914
Czy próbowałeś zamykania i ponownego otwierania pliku? Nie jestem pewien, jaka jest zawartość pliku, jeśli napiszesz do niego, a następnie natychmiast go odczytasz. Może być konieczne zamknięcie go najpierw, aby upewnić się, że dane zostały przepłukane? Ponadto upewnij się, że otworzysz go do odczytu po raz drugi ... – aardvarkk