这段代码有可能导致系统死机吗?请高手指点,错在那里啊,急死了,在线等
int search_msg(char bar[],char temp1[],char sn[],char style[],char model[],int mode)
{
FILE *fp;
FILE *index;
int exist;
long i,j,mid,ret;
char rec[150],t;
Datatype data;
datap td;
ret=0;
exist=0;
i=1;
if(mode)
{
DataNUM=fsize(indexfile);
fp=fopen(checkfile,"rb");
index=fopen(indexfile,"rb");
}
else
{
DataNUM=fsize(nindex);
fp=fopen(ndata,"rb");
index=fopen(nindex,"rb");
}
if(!fp)
{
putestr(0,1,"File open Error!");
fclose(fp);
fclose(index);
return 0;
}
fseek(index,0,0);
j=0;
i=DataNUM/20;
printf("\nDFSize:%ld",i);
gch();
mid=0;
exist=0;
while(j<=i)
{
mid=(i+j)/2;
printf("\nAll:%ld,ID:%ld",i,mid);
fseek(index,mid*20,0);
fread(td.barcode,16,1,index);
fseek(index,mid*20+16,0);
fread(&td.point,4,1,index);
ret=strcmp(bar,td.barcode);
printf("\n%s:%ld",td.barcode,td.point);
if(ret==0)
{
exist=1;
break;
}
else if(ret>0)
{
j=mid+1;
}
else if(ret<0)
{
i=mid-1;
}
}
if(exist)
{
fseek(fp,td.point,0);
fread(&t,1,1,fp);
fseek(fp,td.point,0);
memset(rec,0x0,150);
memset(data.serialN,0x0,9);
memset(data.name,0x0,51);
memset(data.model,0x0,17);
memset(data.barcode,0x0,14);
memset(data.style,0x0,30);
fread(rec,(int)t,1,fp);
getdata(rec,5,(int)rec[1],data.serialN);
getdata(rec,5+(int)rec[1],(int)rec[2],data.name);
getdata(rec,5+(int)rec[1]+(int)rec[2],(int)rec[3],data.model);
getdata(rec,5+(int)rec[1]+(int)rec[2]+(int)rec[3],(int)rec[4],data.style);
memset(temp1,0x0,52);
strcpy(temp1,data.name);
strcpy(sn,data.serialN);
strcpy(style,data.style);
strcpy(model,data.model);
fclose(fp);
fclose(index);
printf("%s","\nFind!");
gch(0);
return 1;
}
else
{
fclose(fp);
fclose(index);
printf("%s","\nNo Find!");
gch(0);
return 0;
}
}