使用标准C/C++,帮我文件比较的算法。散200分

痞子酷 2007-04-27 03:59:17
使用标准C/C++,帮我文件比较的算法,
具体要求如下:
1、2个目录下的文件很多,但格式相同。
2、文件格式取特定字段支持配置,
3、支持分割符和定长字段。
比较出的的文件分为4类型
1、目录1比目录2多的记录,输出一个文件
2、目录2比目录1多的记录,输出一个文件
3、目录1和2关键字相同的记录,但其他字段不相同的字段,输出一个文件
4、目录1和2,所有字段相同,输出一个文件
...全文
321 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinming868 2007-10-23
  • 打赏
  • 举报
回复
关注中
xiaoyuezhong 2007-06-22
  • 打赏
  • 举报
回复
在Baidu 搜到了此贴,关注一下.
wuyanchao 2007-04-29
  • 打赏
  • 举报
回复
mark
痞子酷 2007-04-28
  • 打赏
  • 举报
回复
分析数据和比较数据,采集标准的C/C++,以后移植方便,写的代码一般在unix跑,win调试。
痞子酷 2007-04-28
  • 打赏
  • 举报
回复
开发程序,一般不考虑内存问题,如果内存在1。5G以下,不考虑使用内存情况。
痞子酷 2007-04-28
  • 打赏
  • 举报
回复
目前想法:
1、不使用数据库。
2、按关键字段生成临时文件,这些文件话单量比较小,一般不会超过100W。
3、取关键字段生成临时文排序,进行双指针比较,直接分析处理数据
3.1、100W的数据比较大,排序速度慢,采用关键字哈列重新分组排序,速度提供N倍
3.2、比较分析记录,输入文件
4、OK
constantine 2007-04-28
  • 打赏
  • 举报
回复
这么大是不行了,load比较慢,而且站内存
3000W行估计记事本都很多M了吧,直接一行一行读吧。再快是否做文件映射呢?
constantine 2007-04-28
  • 打赏
  • 举报
回复
用函数一行一行读也可以,写string的解析,然后比较也行,不过我觉得没有用tstringlist来的简单。但是如果文件都很大用tstringlist就不大好。

如果是delphi中,做这种东西用他的带格式的文本是很容易处理的
key1!key2!field1!...!fieldN 这样一条记录,定义一个结构体就行了。
里面没一个都是结构体的字段。保存的时候连!都不用了,读写都是带有结构的,简单多了。跟数据库差不多。
痞子酷 2007-04-28
  • 打赏
  • 举报
回复
记录数是非常大,一般在100W以上,一天大概3000W左右
痞子酷 2007-04-28
  • 打赏
  • 举报
回复
记录数是非常大,一般在100W以上
过客猫2022 2007-04-28
  • 打赏
  • 举报
回复
ding!
constantine 2007-04-28
  • 打赏
  • 举报
回复
如果文件不是特别大用Tstringlist还是比较好实现的。
遍历目录X,记录所有文件名字,保存到一个Tstringlist *x中;
遍历目录Y,记录所有文件名字,保存到一个Tstringlist *y中;
for,判断x中的记录是否在y中,有的保存到一个Tstringlist *xt(相同的文件)中;没有的保存到Tstringlist *xd(x比y多的文件)中
for,判断x中的记录是否在y中, 没有的保存到Tstringlist *yd(y比x多的文件)中,相同的不需要再处理了,上一步做了。
到这里1和2完成,用savetofile就可以保存到文件。xt在下面要用到,yd,xd可以free了。

3和4
load xt中的文件名在x,y目录里面对应的文件到Tstringlist *xtext;Tstringlist *ytext;然后每行都用TStringlist对他进行分割Delimiter='!';然后比较2个key和n个field
这样就可以得到你要的了。
总结,中间就是不断使用Tstringlist。
痞子酷 2007-04-28
  • 打赏
  • 举报
回复
大家不要写代码,主要描述思路即可。
思路决定出路~!
痞子酷 2007-04-28
  • 打赏
  • 举报
回复
使用标准C/C++,帮我文件比较的算法,
具体要求如下:
1、2个目录下的文件很多,但格式相同。
2、文件格式取特定字段支持配置,
3、支持分割符和定长字段。
比较出的的文件分为4类型
1、目录1比目录2多的记录,输出一个文件
2、目录2比目录1多的记录,输出一个文件
3、目录1和2关键字相同的记录,但其他字段不相同的字段,输出一个文件
4、目录1和2,所有字段相同,输出一个文件

文件格式举例:
目录1文件:A.txt
key1!key2!field1!...!fieldN
key1!key2!field1!...!fieldN
...
key1!key2!field1!...!fieldN

目录2文件:B.txt
key1;key2;field1;...;fieldN
...
key1;key2;field1;...;fieldN
jacknes009 2007-04-28
  • 打赏
  • 举报
回复
学习中
Waiting4you 2007-04-27
  • 打赏
  • 举报
回复
全是星,偶也厚脸皮地往里挤挤):
jacknes009 2007-04-27
  • 打赏
  • 举报
回复
1.2.都比较简单
后面的不知道你说的文件字段是啥意思?
文本文件还是其他呢?
文件字段 是文件名,还是文件数据中的取的些关键字
我不懂电脑 2007-04-27
  • 打赏
  • 举报
回复
google
ccrun.com 2007-04-27
  • 打赏
  • 举报
回复
关注。
constantine 2007-04-27
  • 打赏
  • 举报
回复
1.2.都比较简单
后面的不知道你说的文件字段是啥意思?
文本文件还是其他呢?
加载更多回复(2)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧