求大神看一看
编程吧
全部回复
仅看楼主
level 6
逛逛2012 楼主
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
   FILE *fp;
   long n,a,i,j;
   char b,c,x,ch[11];
   short d,e=1;
   scanf("%d",&i);
   if(i==1)
   if((fp=fopen("c:\\log\\aaa.dic","rb"))==NULL)
   {
printf("Can`t open this file.\n");
      exit(1);
   }
   else
     if((fp=fopen("c:\\log\\bbb.dic","rb"))==NULL)
     {
         printf("Can`t open this file.\n");
             exit(1);
      }
      fread(&n,4,1,fp);
      fread(&n,4,1,fp);
      fread(&d,2,1,fp);
      d=(d-33)/32; //读取字段的总个数
      fread(&x,1,1,fp);
      fread(&x,1,1,fp);
      for(i=0;i<5;i++)
       fread(&n,4,1,fp); //跳过前32个字节
     loop:for(i=0;i<11;i++) //读取字段名
     {
       fread(&ch[i],1,1,fp);
      if(ch[i]==48)
      {
          ch[i]=0; //遇见0,改存为空字符
          for(j=i+1;j<11;j++)
              fread(&x,i,i,fp);
               i=j;
      }
     }
     fread(&x,1,1,fp);
     if(strcmp(ch,"math")==0)
     {
  fread(&a,4,1,fp);
      fread(&b,1,1,fp);
      fread(&c,1,1,fp);
     }
     else
     {
         for(i=0;i<5;i++)
           fread(&n,4,1,fp);
         while(e<d)
         {
           e++;
           goto loop;
          }
      }
       b=(int)b-48;
      c=(int)c-48;
      printf("%d\n%d\n%ld\n",b,c,a);
      return 0;
}
文件aaa.dic、bbb.dic都是数据库文件(都在当前目录中)。数据库文件的文件头是一种固定的结构,如下表所示
文件头结构的内容是二进制方式存储的。
从键盘输入一个数字,打开相应的数据库文件(1--aaa.dic,2--bbb.dic),已知数据库中肯定有math这个字段(字段名:math),编程求出以下信息:
1、字段长度(或字段宽度,即该字段的信息占几个字节);
2、字段的值有几位小数;
3、该字段的值在一条记录中所处的起始位置
2013年06月15日 07点06分 1
level 6
逛逛2012 楼主
看看一算法对不对???
2013年06月15日 07点06分 2
1