当前位置:编程学习 > C/C++ >>

C语言的问题: 文本读取 写入 结构体比较 30QB奖励

有两个文件 record1 record2 分别有如下格式的数据: Name: openlab Dname: ftp1543 logTYPE: 7 sTime: 4294967180 mTime: 0 logIP: 192.168.0.63(这是文件record1的) Name: openlab Dname: ftp929 logTYPE: 8 sTime: 1289178421 mTime: 0 logIP: 192.168.0.22(这是文件record2的) 各近30000行这样的数据 (要求) 如果Name Dname logIP 都相同 就将两个配对的数据其写入到新建的record3文件中去 写入的格式同上 (建议思路) 先将文本内容读入相应的结构体中 再进行相应的比较和处理 注意一点 代码有30000行 内存可能会吃不住 结构体构造如下 typedef struct logRECORD { char Name[32]; char Dump1[4]; char Dname[32]; int sesID; short logTYPE; char Dump2[6]; int sTime; int mTime; char Dump3[26]; char logIP[257]; } typedef struct logR { char Name[32]; char Dname[32]; int sTime; int mTime; int logtime; char logIP[257]; } 求完整的C代码实现 最好是可以函数封装好的 知道分数给的低 我的QQ:519790297 可以加我QQ 索取测试用的record1 和record2 也可以用上面的代码在txt文档中多复制几次作为测试用文本 一旦代码证明可以施行 愿意为您充上30QB 作为额外的补偿 言出必行 期待大神们的帮助 在此再次多多感谢
追问:求哈希函数以及数组的具体实现代码 你的意思我大概懂了 就是对hash函数完全不了解 
还有最后分批写入该如何写 求示范
谢谢你的点拨 实现代码 30QB属于您
答案:提供一个思路吧, 对Name, Dname和logIP做一个hash函数,结果是一个32位整数,这样可以存放到一个大小为30000的数组中(可以事先排序),数组的每一个下标再乘以文件结构体大小就是偏移量,这样record1和record2一共用的内存大约为30000*4*2=240000=240k(算1k=1000)

写文件的record3时候才真正去读文件record1和record2里面的内容,因为这时候已经知道相应偏移量。为了提高性能,可以分批写比如1000行记录写一次,分多次追加减少内存消耗

上一个:加速度传感器MXC6225XU 与 89c51单片机 模拟I2C C语言程序(MXC6225XU的储存器地址)
下一个:C语言改进

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,