刚开始我用链表保存数据(信息),然后将数据存入文件中......当我将数据从文件中读取出来查询时,想用链表来查询到其中一个信?
请问怎么解决??
你使用链表存储信息保存在文件中,然后在从文件中读取信息,读取多少信息就要创建多少节点的链表,既然都读取到链表中去了,那么查询某一个信息不就是遍历吗?
例子差不多:
void readFile()
{
FILE* fp;
int i;
if ((fp = fopen("data.dat", "rb")) == NULL)
{
printf("cannot open file! \n");
return;
}
for (i = 0; i < 110 * 110; i++)
{
if (i <= 26)
{
if (fread(&q[i].name, sizeof(q[i].name), 1, fp) != 1)
{
printf("file read error! \n");
}
if (fread(&q[i].jieshao, sizeof(q[i].jieshao), 1, fp) != 1)
{
printf("file read error! \n");
}
printf("%s\t%s", q[i].name, q[i].jieshao);
}
else
{
if (fread(&map[i / 110][i % 110], sizeof(map[i / 110][1 % 110]), 1, fp) != 1)
{
printf("file read error! \n");
}
printf("\t%d", map[i / 110][i % 110]);
}
}
system("pause");
fclose(fp);
}
void writeFile()
{
FILE* fp;//文件操作指针
int i;
fp = fopen("data.dat", "wb");//打开文件路径,wb以只写方式二进制打开
if (fp == NULL)//如果为空 打开失败
{
printf("file write error! \n");
return;//
}
for (i = 0; i < 110 * 110; i++)
{
if (i <= 26)
{
if (fwrite(&q[i].name, sizeof(q[i].name), 1, fp) != 1)//写入数据 把&q[i].name,写入,写入sizeof(q[i].name)大小,1表示要读写的数据块的块数。fp表示文件指针。
{
printf("file write error! \n");
}
if (fwrite(&q[i].jieshao, sizeof(q[i].jieshao), 1, fp) != 1)
{
printf("file write error! \n");
}
}
else
{
if (fwrite(&map[i / 110][i % 110], sizeof(map[i / 110][i % 110]), 1, fp) != 1)
{
printf("file write error! \n");
}
}
}
fclose(fp);
printf("\n写入成功!\n");
}