1、/读取文件void Qsort(int l,int r);/排序int Binsearch(int s,int t,int key);/二分查找int Search();/检索void Update();/更新struct RoadRecord short ussize; long ulLinkID; short usRoadnamesize; int usDispclass; int usBrunch; int usRoadnameflag; char Roadname20;struct RoadRecord roadLength;struct Datestore/定义结构体存储数据 int
2、 n; char Totalsize4; char LinkID_15; char Roadnamesize2 ; char Road_flag2;static struct Datestore DsLength;struct dateout long LinkID; int Dispclass; int Brunch; int Roadnameflag;struct dateout dateLength;int ReadFile()/模块一读取文件 int m; char filename50; unsigned short ustotalsize; unsigned long ulLink
3、ID; unsigned short usRoadnamesize; FILE *fp_1=fopen(D:GTBL.dat,rb+); FILE *fp_2=fopen(Newout.txtw+ if(fp_1=NULL)/文件不存在手动输入文件路径 printf(nt无法打开文件“GTBL.dat” 或文件不再D盘根目录下nn请手动输入文件路径(路径中请勿有中文): scanf(%s,filename); if ( (fp_1=fopen(filename,)=NULL) printf(nt无法打开文件“GTBL.dat” 或文件不存在!nn return 0; elsent文件打开成功!
4、 if(fp_2=NULL)nt无法打开文件“newout.txt”或文件不存在! return 0; printf(nt文件读取中.n while(fread(DsSizecount.Totalsize ,2, 1, fp_1) = 1) fread( DsSizecount.LinkID_1 , 4, 1, fp_1 ) ;/读取LinkID字符 fread( DsSizecount.Roadnamesize ,2, 1, fp_1 ) ; /读取Roadnamesize字符串 fread( DsSizecount.Road_flag, 4, 1 , fp_1 ) ; ustotalsiz
5、e = MCGETSHORT(DsSizecount.Totalsize) ; /调用宏函数将字符串信息转化为数值类型 ulLinkID = MCGETLONG(DsSizecount.LinkID_1) ; usRoadnamesize = MCGETSHORT(DsSizecount.Roadnamesize);/赋值将数值信息传到结构体中 DsSizecount.n=ustotalsize-12; roadSizecount.ussize=ustotalsize; roadSizecount.ulLinkID=ulLinkID; roadSizecount.usRoadnamesize=
6、usRoadnamesize; m=(int)DsSizecount.Road_flag3&255; roadSizecount.usDispclass=m&15; roadSizecount.usBrunch=(m&112)/16; roadSizecount.usRoadnameflag=(m&128)/128; dateSizecount.Dispclass=roadSizecount.usDispclass; dateSizecount.Brunch=roadSizecount.usBrunch; dateSizecount.Roadnameflag=roadSizecount.usR
7、oadnameflag; dateSizecount.LinkID=ulLinkID; fread( DsSizecount.Roadname , sizeof(char) , ustotalsize-12 , fp_1 ) ;/从文件中读取道路名称 strcpy(dateSizecount.Roadname,DsSizecount.Roadname+4); fprintf(fp_2,LinkID=%dt,dateSizecount.LinkID);Flag=,dateSizecount.Roadnameflag);Brunch,dateSizecount.Brunch);Dispclass=
8、,dateSizecount.Dispclass);Roadname=%st,dateSizecount.Roadname);n Sizecount+; fclose(fp_1); fclose(fp_2);nt文件读取成功nn 生成文件 return 1;void Qsort(int l,int r)/模块二排序(快速排序) int n=datel.LinkID,i=l,j=r; dateLength-2=datel; DsLength-2=Dsl; if(l=r) return ; while(ij) while(i=n) -j; datei=datej; Dsi=Dsj; datei.L
9、inkID=n) +i; datej=datei; Dsj=Dsi; datei=dateLength-2; Dsi=DsLength-2; Qsort(l,i-1); Qsort(i+1,r);int Binsearch(int s,int t,int key)/二分查找 int low=s,high=t,mid; if(skey) return Binsearch(low,mid-1,key); return Binsearch(mid+1,high,key); return -1;int Search()/模块三检索 int sel,i,flag=0,n,key,mid,s=2,t=Si
10、zecount; FILE *p,*p1,*p2;/分别保存不同的道路检索信息n请输入检索方式:nt1:指定LinkID检索nt2:指定交叉Link列表示Class番号检索nt3:指定查找岔路数检索nt4:指定道路名称检索nt0:返回n请选择: while(scanf(%d,&sel)!=1)/判断输入的数据是否为数字 fflush(stdin);nt输入错误,请重新输入! switch(sel) case 1:/LinkID检索请输入LinkID: scanf(n); key=n; mid=Binsearch(s,t,key); if(mid!=-1) printf(nt检索到的信息不足5条,信息将显示在屏幕上!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1