c/c++语言开发共享如何使用fread和fwrite函数来读写二进制文件?

嗨,在我的项目中,我要读取一个.bin文件,其中包含short(16 bit values)forms的传感器数据。 我正在使用fread函数进入缓冲区,但我觉得读入没有正确发生。 我的意思是我写的东西和我读的东西之间没有一致性。你们能否说出这里出了什么问题? 这不是我项目中的代码……我只是想在这里validationfreadfwrite函数。

 #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

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐