我想将计算后的数据写入一个 .txt文件中
FILE *xzf;
int a[10];
a[1]=1;a[2]=1;a[3]=1;a[4]=1;
     if ((xzf=fopen("xzf.txt","wb"))==NULL)
     { printf("cannot open the file!\n");
      exit(0);
      }
      fwrite(a,sizeof(int),4,xzf);
      fclose(xzf);
      printf("\n data write in xzf.dat\n");
为什么结果成了这冬冬:     烫烫        

解决方案 »

  1.   

    忘了说一句, 你是以2进制写的数据, 所以,你看到的写入的数据实际上是以2进制写入的数据的AscII 码,当然是乱码,读入进来也是那种 01 00 00 00 的那种数据。
    如果你要写入的数据要能看懂, 转成字符串以后再写吧。
      

  2.   

    不好意思啊,老弟,,matlab用多了,但是初始化a[0]=0;a[1]=1;a[2]=2;a[3]=3;a[4]=4;后结果是:
    000000  00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00...............
    000010
    4跑哪去了?有没有办法变成这种形式:    0.00  1.00  2.00  3.00  4.00
    多指教!谢谢 
      

  3.   

    要看到4,fwrite(a,sizeof(int),5,xzf);//4 changed to 5
    先显示成你说的方式  FILE *xzf;
      int a[10]; 
      a[0]=0;a[1]=1;a[2]=1;a[3]=1;a[4]=1;
      if ((xzf=fopen("xzf.txt","wb"))==NULL)
      {
        printf("cannot open the file!\n");
        exit(0);
      }   for(int i = 0; i < 5; i++)
      {
        fprintf(xzf, "%.2lf ", a[i];
      }
     
      fclose(xzf);
      printf("\n data write in xzf.dat\n");
      

  4.   

    发现如下问题:
    FILE *xzf;
            FILE *gyz;
            int i;
         double a[10];
        double b[10];
    a[0]=0.00;a[1]=1.00;a[2]=2.00;a[3]=3.00;a[4]=4.00;
           case 1:
         if ((xzf=fopen("xzf.txt","wb"))==NULL)
         { printf("cannot open the file!\n");
          exit(0);
          }
     //     fwrite(a,sizeof(double),5,xzf);
       for(i = 0; i < 5; i++)
      {                                       这里只能用fprintf,不能用fwrite
      fprintf(xzf, "%f", a[i]);
      }   
     fclose(xzf);
          printf("\n data write in xzf.dat\n");
    break;
        case 2:
          if((xzf=fopen("xzf.txt","rb"))==NULL)
         {
      printf("cannot open the file\n");
              exit(0);
          }
         fread(b,sizeof(double),5,xzf);
         fclose(xzf);     if ((gyz=fopen("gyz.txt","wb"))==NULL)
         { printf("cannot open the file!\n");
          exit(0);
          }
        fwrite(b,sizeof(double),5,gyz);     
    //   for(i = 0; i < 5; i++)
    //   {                                          这里只能用fprintf,不能用fwrite
    //   fprintf(gyz, "%f", b[i]);
    //   } 
          fclose(gyz);
    为什么两次写文件用的两个命令不一样,否则出现乱码
      

  5.   

    fread(b,sizeof(double),5,xzf); //<======应该用fscanf循环读入,你用fread读出的本身就是错误的数据
         fclose(xzf);     if ((gyz=fopen("gyz.txt","wb"))==NULL)
         { printf("cannot open the file!\n");
          exit(0);
          }
        fwrite(b,sizeof(double),5,gyz);     去看看c语言的书吧