📄 getadd.h
字号:
/* *****************************E2基站定位 0.1版*************************************************************Written by Letterb @scnu_cs_052008/1/18Email: boy.letterb@yahoo.com.cn or letterb@tom.com感谢netsnakecq(Bin Li <glen.redlion@gmail.com>)的开源使用lasly的sdk和ilove3d的更新include********************************letterb******************************************/#include <stdlib.h>#include <stdio.h>#include <string.h>#include <math.h>#define MAX_INT 32766bool getlocaladd(const char * filename,char * localid,char *add) //用基站id搜索基站地址{ bool flag=false; char address[400]; char buf[500]; int mmc,mnc,lac , cid , prc; FILE * fp = fopen(filename,"r"); while(fgets(buf,sizeof buf , fp)) { if(strstr(buf,localid)) { sscanf(buf,"%d;%d;%d;%d;%d;%s",&mmc,&mnc,&lac , &cid , &prc,address); int len=strlen(buf); int i=len-1; while(buf[i]!=';' && i >0 ){i--;} strcpy(add,buf+i+1); printf("found!!\n"); flag=true; break; } } if(flag) printf("%d;%d;%d;%d;%d;%s",mmc,mnc,lac , cid , prc,add); fclose(fp); return flag;}bool findnearadd(const char * filename,char * localid,char *add) //查找出最近的基站{ bool flag=false; char address[400]; char nearaddinfo[500]; char buf[500]; memset(nearaddinfo,0,sizeof nearaddinfo); int mmc,mnc,lac , cid , prc; int pre_mmc,pre_mnc,pre_lac , pre_cid ; int min_lac(MAX_INT),min_cid(MAX_INT); sscanf(localid,"%d;%d;%d;%d",&pre_mmc,&pre_mnc,&pre_lac , &pre_cid); FILE * fp = fopen(filename,"r"); while(fgets(buf,sizeof buf , fp)) { sscanf(buf,"%d;%d;%d;%d;%d;%s",&mmc,&mnc,&lac , &cid , &prc,address); if(mmc==pre_mmc && mnc == pre_mnc) { if(min_lac > abs(lac-pre_lac)) { min_cid = abs(cid-pre_cid); min_lac = abs(lac-pre_lac); strcpy(nearaddinfo,buf); } else if(min_lac == abs(lac-pre_lac)) { if(min_cid > abs(cid-pre_cid)) { min_cid = abs(cid-pre_cid); strcpy(nearaddinfo,buf); } else if(min_cid == abs(cid-pre_cid)) { if(!strlen(nearaddinfo)) strcpy(nearaddinfo,buf); else { strcat(nearaddinfo,"\n"); strcat(nearaddinfo,buf); } } } } /* if(strstr(buf,localid)) { int len=strlen(buf); int i=len-1; while(buf[i]!=';' && i >0 ){i--;} strcpy(add,buf+i-1); printf("found!!\n"); flag=true; break; }*/ } printf("%d;%d;%d;%d;%d;%s\n",mmc,mnc,lac , cid , prc,nearaddinfo); strcpy(add,nearaddinfo); fclose(fp); return flag;}bool append_to_file(char *filename,char *appstr) //追加基站信息{ FILE *file; file=fopen(filename,"a");// fputs("\n",file); fputs(appstr,file); fclose(file); return false;}int isexist(char *filename,const char *keystr,char * resbuf) //检测文件行是否存在keystr{ FILE *file; if(file=fopen(filename,"r")) { char buf[500]; while(fgets(buf , sizeof buf,file)) {// buf[strlen(buf)-1]='\0'; if(strstr(buf,keystr)) { strcpy(resbuf,buf); fclose(file); return 1; } } fclose(file); return 0; } else { fclose(file); return -1; } return -1;}bool cancel_line(char *filename,char *line) //取消含有line的行{ if(strlen(line)<1) return false; FILE *fp=fopen(filename, "r"); if(fp==NULL) { printf(">> ERROR reading java registry!\n"); return false; } fseek(fp, 0, SEEK_END); unsigned int flen=ftell(fp); rewind(fp); char buf[flen+strlen(line)]; unsigned int i=0; for(i=0; i<flen; i++) buf[i]=fgetc(fp); fclose(fp); buf[flen]=0; char mystr[strlen(buf)]; strcpy(mystr,buf); char temp1[strlen(buf)]; char temp2[strlen(buf)]; memset(temp2, 0, sizeof(temp2)); memset(temp1, 0, sizeof(temp1)); char* p=strstr(mystr,line); if(p==NULL) return false; char * ori_p=mystr; i=0; while(ori_p<p) { temp1[i++]=*ori_p; ori_p++; } temp1[i]='\0'; FILE *fp2=fopen(filename, "w"); if(fp2==NULL) { printf(">> ERROR writing java registry!\n"); return false; }// for(i=0; i<strlen(buf); i++) fputc(buf[i], fp2); fputs(temp1,fp2); fclose(fp2);/**/ p+=strlen(line); if(p==(flen+mystr)) return false; i=0; strcpy(temp2,p); fp2=fopen(filename, "a"); if(fp2==NULL) { printf(">> ERROR writing java registry!\n"); return false; } fputs(temp2, fp2); fclose(fp2);/**/ return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -