嗨,在我的项目中,我要读取一个.bin文件,其中包含short(16 bit values)
forms的传感器数据。 我正在使用fread
函数进入缓冲区,但我觉得读入没有正确发生。 我的意思是我写的东西和我读的东西之间没有一致性。你们能否说出这里出了什么问题? 这不是我项目中的代码……我只是想在这里validationfread
和fwrite
函数。
#include 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
使用w+
模式打开文件(读写)。 以下代码有效:
#include int main() { FILE *fp = NULL; short x[10] = {1,2,3,4,5,6,5000,6,-10,11}; short result[10]; int i; fp=fopen("temp.bin", "w+"); if(fp != NULL) { fwrite(x, sizeof(short), 10 /*20/2*/, fp); rewind(fp); fread(result, sizeof(short), 10 /*20/2*/, fp); } else return 1; printf("Resultn"); for (i = 0; i < 10; i++) printf("%d = %dn", i, (int)result[i]); fclose(fp); return 0; }
带输出:
Result 0 = 1 1 = 2 2 = 3 3 = 4 4 = 5 5 = 6 6 = 5000 7 = 6 8 = -10 9 = 11
当您打开文件时,您忘记允许阅读:
fp=fopen("c:\temp.bin", "wb");
应该:
需要了解更多c/c++开发分享如何使用fread和fwrite函数来读写二进制文件?,也可以关注C/ C++技术分享栏目---计算机技术网(www.ctvol.com)!
fp=fopen("c:\temp.bin", "w+b");
以上就是c/c++开发分享如何使用fread和fwrite函数来读写二进制文件?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/980250.html