如果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获取各个字段的值,这个东西的格式容错性很差 。
文章插图
- rado手表jubile怎么看型号 rado电子手表jubile多少钱
- 肩宽怎么量 肩宽怎么量标准图
- 卡西欧mute是什么意思 卡西欧mute是什么意思怎么关
- 怎么看一个人的面相?如何看一个人的面相
- 房产约定怎么写
- 开场白格式怎么写
- 花艺术字怎么写
- 柚的拼音怎么写
- 恐龙大战观后感怎么写
- 小汤圆韩文怎么写