#include "stdio.h"
#define List_Size 20
struct RecordType
{
int key//简单查找
char otherkey
}
struct RecordList
{
RecordType r[List_Size+1]
int length
}list1,*p
void init_list()
{
int i //初始化数据
p=&list1
for(i=0i<List_Size+1i++)
{
p->r[i].key =i
p->r[i].otherkey =i+1
}
p->length =List_Size+1
for(i=0i<List_Size+1i++) //确认初始化数据
{
printf("list.r[%d].key=%d,list.r[%d].otherkey=%d\n",i,p->r[i].key,i,p->r[i].otherkey)
}
printf("list.length=%d\n",p->length)
}
int BinSrch(RecordList L,int k) //二分差算法
{
int low,high,mid
int i=0
low = 0 //初始化low
high=L.length-1
while(low<=high)
{
mid=(low+high)/2
if(k==L.r[mid].key)
{
i=midbreak
}
else
{
if(k <L.r[mid].key)
{
high=mid-1
}
else
low=mid+1
}
}
// if((low==high)&&(k!=L.r[mid].key))
// {
// return (0)
// }
return (i)
}
void main()
{
int result=0
p=&list1
init_list()
result=BinSrch(list1,7)
printf("the reslut=%d",result)
getchar()
}
你是用C标准I/O库函数的话,(1)文件定位:
文件定位指读取或设置文件当前读写点,所有的通过文件指针读写数据的函数,都是从文件的当前读写点读写数据的。
常用的函数有:
#include
<stdio.h>
int
fseek(FILE
*stream,
long
offset,
int
whence)
fseek
设置当前读写点到
offset
处,
whence
可以是
SEEK_SET,SEEK_CUR,SEEK_END,这些值决定是
从文件头、当前点和文件尾计算偏移量
offset.
你可以定义一个文件指针FILE
*fp,当你打开一个文件时,文件指针指向开头,
你要指到多少个字节,只要控制偏移量就好,例如
相对当前位置往后移动一个字节:fseek(fp,1,SEEK_CUR)中间的值就是偏移量。
如果你要往前移动一个字节,直接改为负值就可以:fseek(fp,-1,SEEK_CUR)