Board logo

标题: 一个简单的定义数据格式,采集数据,读取数据的程序 [打印本页]

作者: x86    时间: 2005-6-21 23:05     标题: 一个简单的定义数据格式,采集数据,读取数据的程序

[这个贴子最后由x86在 2005/06/21 11:08pm 第 1 次编辑] 1、在服务端定义需采集的数据格式,保存在一个文件中。 2、客户端根据服务端定义的格式文件生成数据采集界面,采集数据,将数据存储在文件中。 3、在服务端识别客户端采集的数据文件。 1.整个程序分成server.exe和client.exe两部分。其中server部分主要用来定义数据格式,并保存在一个文件中。然后client部分来对数据格式的文件进行识别,并根据该文件进行数据的采集。并把采集的数据保存到一个文件中去。然后server部分再根据相关的数据格式文件来识别已经采集并保存的数据文件。 //---------------------------server.cpp------------------------------ //--------------定义数据格式,并根据已知格式读取数据------------------ #include #include struct format {char name[100]; int type; int start; int end; format* next; }; void main() { int num,i,temp1; char filename[20]; char dataname[20]; char rulename[20]; char flag=';\0';; char flag2=';\0';; FILE* fp1; FILE* fp2; FILE* fp3; int j; char* name; format* temp; format* pt=NULL; format one[100]; printf("1:写入数据格式文件\n"); printf("2:根据已存在格式文件读出数据文件\n"); scanf("%c",&flag); if(flag==';1';) goto chuangjian; else goto shuchu; chuangjian:printf("请输入要创建规则文件的名字:"); scanf("%s",filename); if((fp1=fopen(filename,"wb"))==NULL) {printf("file open filed!\n"); exit(0); } printf("请输入项目数:"); scanf("%d",&num); pt=(format *)malloc((num*sizeof(struct format))); memset(pt,0,(num*sizeof(struct format))); temp=pt; for(i=0;iname),&(pt->type),&(pt->start),&(pt->end)); if(num-i==1) pt->next=NULL; else {pt->next=pt+1; pt++; } } if((fwrite(temp,(num*sizeof(struct format)),1,fp1))!=1) printf("write error!\n"); free(temp); fclose(fp1); printf("规则写入成功!\n"); exit(0); shuchu:printf("输入规则文件名:\n"); scanf("%s",rulename); if((fp3=fopen(rulename,"rb"))==NULL) {printf("rule文件打开失败!\n"); exit(0); } printf("输入要打开的文件名\n"); scanf("%s",dataname); if((fp2=fopen(dataname,"rb"))==NULL) {printf("data文件打开失败!\n"); exit(0); } for(i=0;i<100;i++) {fread(&one,sizeof(struct format),1,fp3); if(one.next==NULL) break; } fclose(fp3); temp1=i+1; for(i=0;i.name); printf("\n"); while(!feof(fp2)) { for(i=0;i.type==0) {fread(&j,sizeof(int),1,fp2); printf("%d\t",j); } if(one.type==1) {name=(char*)malloc(one.end); fread(name,one.end,1,fp2); printf("%s\t",name); } if(i==temp1-1) printf("\n"); } } fclose(fp2); } //----------------------client.cpp------------------------- //-----------------------根据已知数据格式采集数据并保存------------- #include #include void main() {int i,j,temp; int num; int length; unsigned char* str=NULL; FILE* fp1; FILE* fp2; int k; char*str2=NULL; struct format {char name[100]; int type; int start; int end; format* next; }; struct format one[100]; memset(&one,0,sizeof(format)); char filename[20]; char dataname[20]; printf("请输入要解析的规则文件名:"); scanf("%s",filename); if((fp1=fopen(filename,"rb"))==NULL) {printf("file open filed!\n"); exit(0); } printf("名字\t类型\t下限\t上限\n"); for(i=0;i<100;i++) {fread(&one,sizeof(struct format),1,fp1); printf("%d:%s\t%d\t%d\t%d\n",i+1,&one.name,one.type,one.start,one.end); if(one.next==NULL) break; } fclose(fp1); temp=i+1; printf("一共有%d个属性\n",temp); printf("输入保存数据的文件名:\n"); scanf("%s",dataname); if((fp2=fopen(dataname,"ab"))==NULL) {printf("fp2 open failed\n"); exit(0); } printf("请输入要输入的数据的数目:\n"); scanf("%d",&num); for(i=0;ione[j].end)||(k (one[j].end)) {printf("输入错误,请重新输入!\n"); goto loop2; } fwrite(str2,one[j].end,1,fp2); free(str2); } } } fclose(fp2); }




欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2