首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

二进制文件读写,该如何处理

2012-02-24 
二进制文件读写#includeiostream#includefstream#includestringusingnamespacestdintmain(){struct

二进制文件读写
#include   <iostream>
#include   <fstream>
#include   <string>
using   namespace   std;

int   main()
{
struct   Buffer
{
char   time[10];
char   name[10];
};


Buffer   buffer[3];
memset(   buffer,   0,   sizeof(buffer)   );
strcpy(   buffer[0].time,   "20070628 "   );
strcpy(   buffer[0].name,   "flow1 "   );
strcpy(   buffer[1].time,   "20070629 "   );
strcpy(   buffer[1].name,   "flow2 "   );
strcpy(   buffer[2].time,   "20070629 "   );
strcpy(   buffer[2].name,   "flow3 "   );
ofstream   out;
out.open(   "data ",   ios::binary   );
if   (   !out   )  
{
cout   < <   "Failed   to   open   file "   < <   endl;
return   -1;
}

out.write(   (   char   *   )buffer,   sizeof(buffer)   );


out.close();

return   0;
}

使用下列语句读数据时最后会读到一个空记录,不知道为什么,请高手指教
while   (   !   in.eof()   )
{
memset(   &buffer,   0,   sizeof(buffer)   );
in.read   (   (char   *)&buffer,   sizeof(   buffer   )   );
                                      .....
                  }


[解决办法]
do while !eof()……enddo,表示当数据指针未指到最后一条记录后时,进入循环,而到最后一条记录后时,就退出循环,执行enddo后面的语句。
[解决办法]
先读一次,再判断是否是文件尾,若是文件尾,先读的那次失败,否则继续读,继续判断

热点排行