定义2维数组(每一行后面补零)会浪费不少存储空间。
可以把整个数据表当作一个“文件”来处理,“文件”中的第一行作为一条“记录”,然后逐一查询(匹配)每一条“记录”,直到“文件”结束。
当然,每一条“记录”最前面 要有本条记录的长度(可以自己手工计算和添加,也可以写个VC程序处理一下)。
#define FILE_NOTE_NO 9 /* 文件的记录数量 */
unsigned char code FILE1_DATA[] = {
5, 12, 12, 79, 12, 12, // 这是第一条记录,最前面的记录长度5需要自己添加
5, 12, 12,124, 12, 12, // 这是第二条记录
3, 12, 21, 12,
3, 16, 40, 16,
3, 16, 47, 16,
3, 17,115, 17,
3, 17,130, 17,
7, 18, 12, 18,113, 18, 12, 18,
7, 18, 12, 18,131, 18, 12, 18
};
查询记录时,要历遍整个“文件”的所有记录。
从第1条记录开始,先取出DATA_FILE1组数的第1字节数据,这就是第1条记录的长度。可以先判断记录长度和输入数组的长度是否相同,如果相同再一字节一字节地比较是否相同。如果不匹配,就进入第2条记录。
同样,对于第2条记录,也先判断长度是否相同,再判断数据是否相同......
那如何从第1条记录 找到 第2条记录呢? 实际上只需要得到第1条记录的记录长度,即可找到第2条记录的起始位置...... |