我定义了一个结构来存放一个位置信息,一个位置信息里面有10多项内容
stuct position{
int a;
int b;
char c;
short d;
.....
}
然后用write的方法把它写到一个imform.dat的文件中,现在我是收到一条就写一条,一秒钟有20条左右,所以这样执行起来很慢很好资源,我设想能不能每收到一个位置信息先把它赋给一个数组或者什么方式实现每收到1000条进行一此write操作呢。请教一下,具体怎么做较好呢,贴一点示例的代码。谢谢了。

解决方案 »

  1.   

    是我没有说清楚吗?简单说就是每次接收到一个结构体数据,然后写入一个文件,但是数据量比较大,所以收一条写一条很慢,效率低,想累计收到1000条写一次。mfc中,怎样实现好呢
      

  2.   

    不是每秒钟有20条位置信息发送过来,也就是1秒钟我要收这么条数据,这样就要进行20次的open,write,close.这样不会很慢,效率低?
      

  3.   

    这样收一条就写一条到文件中去,就进行一次open,write,close是不是效率低呢。我想每累计收到n条的时候,然后再一次写进去。
      

  4.   

    不用写一条数据就open close一次
      

  5.   

    用一个数组把收到的数据保存起来,到达数量的时候执行写操作,open write close
    或者
    先打开文件
    然后接收到一条数据就write到文件去
    到最后在close
      

  6.   

    谢谢楼上的热心朋友,看了上面一位朋友说用vector  ,查了下,很感兴趣,怎么实现呢,我是在一个函数中实现的write功能FunWrtie()
    {
    定义一个vector;//这里切不要定义成静态的?要不然怎么保存数据呢,希望能尝试这样实现一次}
      

  7.   

    你在最开始的时候open,然后每次写一个结构的数据,不要close,最后执行完后再close,这样就行了。
      

  8.   

    不是WRITE慢,而是你频繁的OPEN和CLOSE使程序慢了,你可以设置成保存1000次OPEN和CLOSE一次
      

  9.   


    我说忘了,我就是这么做的,是最后关的,这样收一条写一条到文件 与 收一条写一条到一个数组,然后到了一定数目一次性写哪个效率高呢。还有就是接下来我还要做,一个程序将这个.dat文件读出来,要是一直不close,影响不影响,读取软件的读取呢?
      

  10.   

    这个函数知道,我是说收100条数据write一次怎么实现。谢谢了。收一条写一条已经实现了。
      

  11.   


    一条条的写:
    定义一个100维的结构体数组struct *** data_Arr[100]
    for(i=0;i<100;i++)
    {
       fwrite((void *)(data_Arr[i]),sizeof(struct ***),1,fp);  
    }
    一下子写完:
    分配一个100个结构体大小的空间void *pData,收到一个数据就往里面memncpy
    满了之后   fwrite(pData, sizeof(struct ***),100,fp);