主题:[讨论]关于查找的一点的问题?急急!!!
int SeqList::Find(char *ISBN)
{ //寻找元素序列号为ISBN,找到则返回其位置和值,否 则返回-1
int i=1; //图书起始标号
int control=0;
if(head.recordnum==0) return -1; //空表,没有找到
ifstream myinfile;
myinfile.open("mydata.dat",ios::binary); //以二进制方式打开文件
if(myinfile) //打开成功
{
myinfile.seekg(filestart); //将输入文件中指针移到第一条记录储存的位置
while(i<=head.recordnum&&control==0)
{
myinfile.seekg(filestart+sizeof(book)*(i-1));
myinfile.read((char *)&data,sizeof(book));
if(strcmp(data.ISBN,ISBN)==0) control=1; //找到位置i
else i++;
}
myinfile.close();
}
else
{
cout<<endl<<" !! ERROR:Cannot open file 'mydata.dat'. "<<endl;
}
if(i<=head.recordnum&&data.flags!='*') return i; //找到了
if(i<=head.recordnum&&data.flags=='*') return -2; //已作删除标志
else return -3; //没有找到
}
{ //寻找元素序列号为ISBN,找到则返回其位置和值,否 则返回-1
int i=1; //图书起始标号
int control=0;
if(head.recordnum==0) return -1; //空表,没有找到
ifstream myinfile;
myinfile.open("mydata.dat",ios::binary); //以二进制方式打开文件
if(myinfile) //打开成功
{
myinfile.seekg(filestart); //将输入文件中指针移到第一条记录储存的位置
while(i<=head.recordnum&&control==0)
{
myinfile.seekg(filestart+sizeof(book)*(i-1));
myinfile.read((char *)&data,sizeof(book));
if(strcmp(data.ISBN,ISBN)==0) control=1; //找到位置i
else i++;
}
myinfile.close();
}
else
{
cout<<endl<<" !! ERROR:Cannot open file 'mydata.dat'. "<<endl;
}
if(i<=head.recordnum&&data.flags!='*') return i; //找到了
if(i<=head.recordnum&&data.flags=='*') return -2; //已作删除标志
else return -3; //没有找到
}