怎么写dat文件( 二 )


如果FlightNum字段是char数组类型,ff.FlightNum="F05";这种语句就编译不过了 。这种情况排除 。
3 你应该知道指针之间的字符串赋值应该是调用比如memcpy这类函数实现,而且首先得为目的指针分配堆空间 。由于文件内字符串长度位置,分配空间大小未知,不能保证不会出现缓冲区溢出的问题 。
4 常见的写法应该是把所有字段(非字符串字段转成字符串)写入到一块缓冲区内,每个地段之间用 数据内不会出现的某个字符进行分隔,然后把整个缓冲区写入到文件,如果有n个结构体,则重复n次 。比如:
char szBuffer[1024] = {0}; // 大致估计数据最大长度,如果不确定,
// 可以先计算出需要的字节长度,然后new一个堆空间
int iBytes = sprintf(szBuffer, "%s\t%s\t%s\t%d\t%d\r\n"
, ff.FlightNum
, ff.LineNum
, ff.Target
, ff.Haveorder
, ff.Rest);
ofstream os("Airline.dat",ios_base::out|ios_base::binary);
os.write(szBuffer, iBytes);5 从文件读数据,先读出一行,再按分隔符\t查找每个字段,转换字段格式 。赋值到结构体的各个字段变量 。
6 最好不要使用scanf获取各个字段的值,这个东西的格式容错性很差 。

怎么写dat文件

文章插图