uint32_t binary_search_file(FILE *fpfile ,int m_termcount , int single_length, uint64_t termsign)
{
int low=0,high=m_termcount-1;
int mid;
char *ptemp=(char *)calloc ( single_length ,sizeof (char ));
uint32_t seekOffset=0;
while (low<=high)
{
mid=(low+high)/2;
seekOffset=mid *single_length;
if( fseek(fpfile,seekOffset,SEEK_SET)== 0)
{
if( fread(ptemp,single_length,1 , fpfile )==1)
{
if( *( uint64_t *)ptemp == termsign )
{
free (ptemp);
return seekOffset;
}
else if ( *( uint64_t *)ptemp < termsign )
{
low=mid+1;
}
else
{
high=mid-1;
}
}
}
}
free (ptemp);
return -1;
}