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语言改进