加拿大的动物国宝:如何将一个数据文件拆成两个文件

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 03:15:13
程序目标:
将一个数据文件,拆成两个文件(类型1文件,类型2文件)。
如:
原始数据文件格式:
是一个字段定长的数据文件,各字段的含义是:
邮政编码,地址,单位名称,姓名,等等.
具体拆分要求:
1、地址和单位名称都小于等于6个字符的记录,以及邮编不等于6个字符的记录,输出到地址不详文件.
2、其余的记录输出到邮寄文件
3、原始数据文件可能很大(大的有900M),考虑速度、内存占用情况
4、界面显示处理进度.
谢谢!

char *buff;
buff = (char *) malloc(段长*sizeof(char));
打开输入文件和两个输出文件.
用fgets() 从头到尾数一下输入文件共有多少记录(多少行),用于处理进度百分比计算.
rewind() [回绕]输入文件
Loop:
用 fgets() 读一行,放在缓冲存储单元里buff里
从buff里用sscanf()读出地址和单位名称等
计算"字符记录长度"
根据字符记录长度,决定输出到输出文件1还是输出文件2.
输出完毕,显示处理进度百分比.
重新做Loop(循环),直到最后.
关闭文件,退出.

如果是二进制文件,基本策略一样.只是打开时要用binary方法打开,读的时候用指针,读一定的字节数.