索引文件的建立与查询示例(一)

写一个简单的索引文件的建立示例
通过将关键字段放入文件,通过关键字段查询记录所在文件中的位置。

indexFile.cpp
/*
–建立索引文件
–通过索引字段查找索引记录
20240107 星期日 完成
by Racyen

*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
char keyword[50];
int offset;

}IndexItem;
FILE *indexFile;

void addIndex()//创建索引数据
{

indexFile=fopen(“d:/index_file.dat”,“wb”);
if (indexFile==NULL) {
printf(“创建索引文件失败\n”);

}
IndexItem item1={“apple”,234};
IndexItem item2={“banana”,876};
IndexItem item3={“orange”,987};

fwrite(&item1,sizeof(IndexItem),1,indexFile);
fwrite(&item2,sizeof(IndexItem),1,indexFile);
fwrite(&item3,sizeof(IndexItem),1,indexFile);

fclose(indexFile);
}

//读出索引数据

readIndex()
{

int count=100;
//打开文件
FILE *file =fopen (“d:/index_file.dat”,“rb”);

//输入要查找的记录id

char key[100] ;
long findIndex =-1;
int keyword_pos=-1;//索引字段所处的序号
printf(“Enter record key: “);
scanf(”%s”,&key);
IndexItem item_n[count];
//在索引文件中查找
for (int i=0;i<count;i++)//默认查找100次
{
fread(&item_n[i],sizeof( IndexItem),1,file);
if (strcmp(item_n[i].keyword,key)==0)
{
printf(“Record index is found! \n”);

   printf("Record key is %s, and index is :%d , \n",item_n[i].keyword,item_n[i].offset);
   findIndex=item_n[i].offset;
     keyword_pos=i+1;

   break;

}

}

if(findIndex >=0)

{
printf(“Record index is found! \n”);
printf(“Record index pos is the %d pos \n”,keyword_pos);
}
else {
printf(“Record index is not found .\n”);
}
}

indexFile.h
#ifndef INDEXFILE_H_INCLUDED
#define INDEXFILE_H_INCLUDED
#endif // INDEXFILE_H_INCLUDED
void addIndex();
void readIndex();

main.cpp
#include
#include “method.h”
#include “indexFile.h”
using namespace std;
int main()
{

cout << "Hello world!" << endl;
readIndex();
system("pause");
return 0;

}

测试验证
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值