Merhaba, projemde short(16 bit values)
biçiminde sensör verisi olan bir .bin dosyası okudum. Bunu bir arabelleğe fread
işlevini kullanarak yapıyorum, ancak okuma girişinin doğru olmayacağını hissediyorum. demek istediğim, yazdıklarım ile okuduğum arasında bir tutarlılık yok. Burada neyin yanlış gittiğini önerebiliyor musunuz? Bu benim projemdeki kodum değil ... Sadece fread
ve fwrite
işlevlerini burada doğrulamaya çalışıyorum.İkili dosyaları okumak ve yazmak için fread ve fwrite işlevleri nasıl kullanılır?
#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)
}
ben fread() (HEX değerleri) yaptıktan sonra:
temp.bin:
01 02 03 04 05 06 e1 8e 88 06 ef bf b6 0b...
Ben
dosyayı açtıstdout:
Result
0
914
-28
-28714
-32557
1
512
-32557
908
914
dosyayı yeniden açmayı sonra kapanış ve denediniz mi? Bir dosyanın içeriğinin ne yazdığına emin değilim ve hemen okudum. Verilerin temizlendiğinden emin olmak için önce kapatmak zorunda kalabilirsiniz? Ayrıca, etrafında ikinci kez okumak için açtığınızdan emin olun ... – aardvarkk