c/c++语言开发共享从/到文件读取和写入双精度

我试图将双数组写入文件并再次读取它们。 下面是我的代码,但有一些我缺少的东西。 这听起来很傻但我无法做对。

#include  #include  int main(){ int i,j,k; int N = 10; double* readIn = new double[N]; double* ref = new double[N]; FILE* ptr1, *ptr2; ptr1 = fopen("output.txt","w"); //write out for (i = 0; i < N;i++){ ref[i] = (double)i; fprintf(ptr1,"%gn",(double)i); } fclose(ptr1); //read file ptr2 = fopen("output.txt","r+"); //read in for(i = 0;i < N;i++) fscanf(ptr2, "%g", &readIn[i]); fclose(ptr2); for(i = 0;i<N;i++) if(ref[i] != readIn[i]){ printf("Error: %g %gn",ref[i], readIn[i]); } return 0; } 

    你的fscanf使用了错误的格式字符串(GCC会告诉你是否启用了足够的警告)。

    所以你的double填充float值,这当然会导致相当“随机”的错误。

    如果你将"%g"更改为"%lg" ,它应该可以正常工作(至少它在我的Linux机器上)。

    当然,如果您使用C ++流,例如

      #include  std::ofstream file1; std::ifstream file2; file1.open("output.txt"); for (i = 0; i < N;i++){ ref[i] = (double)i; file1 << (double)i << std::endl; } 

      file2.open("output.txt"); for(i = 0;i < N;i++) file2 >> readIn[i]; 

    整个问题本来是可以避免的 – 如果你将readIn变量编辑为float ,只要值对它有效,就可以读取这些值而不用其他任何东西[假设输出也使用cout而不是当然是printf的。

      以上就是c/c++开发分享从/到文件读取和写入双精度相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522093.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐