IO sumup

using C - FILE (stdio.h)

  • 文件的类型: 二进制文件/一般文件, 只是读取和写入的方式不一样罢了

    • 读取一般文件: (写类似)

      1
      2
      FILE *fi;
      fi=fopen("15.dat","r");
    • 读取二进制文件: (写类似)

      1
      2
      FILE *fi;
      fi=fopen("15.dat","rb");
  • 读数据: (写类似)

    • 数据规整的话 (均为同一类型) 可以全部读出, Like:

      1
      2
      3
      4
      FILE * fi2;
      float * data2 =new float[length*width*heigth];
      fi2=fopen("1.bin","rb");
      fread(data2, sizeof(float), length*width*heigth, fi2);
    • 不规整的话: Like:

      1
      2
      3
      4
      5
      6
      float x,y,z,t,f;
      //get to the real data point, start reading
      do
      {
      res = fscanf(fi, "%f %f %f %f %f", &x, &y, &z, &t, &f);
      } while (res != EOF && res == 5);

      NOTE: 写用

      1
      fprintf(fo, "%f\t%f\t0.0\n", a, b);

      1
      fwrite (x, 1, sizeof(float) , fo );

特别注意: fprintf 对应fscanf, fwrite对应fread, 别搞混了!!!

  • 忽略前面的说明信息, 找到真正的开始点再读取:

    1
    2
    3
    4
    5
    //look for a starting point
    do
    {
    res=fscanf(fi,"%100s", stub);
    } while (res != EOF && stricmp(stub, "aaaaa")!=0);

    注: aaaaa为你真正数据的上一个信息, 下一个就为真实数据

using C++ - fstream (fstream.h)

cc: http://www.newxing.com/Tech/Program/Cpp/577.html