微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题用C语言处理数据库需要注意的一个问题
栏目软件大世界
作者王雨
发布1997-01-01
  用C语言直接操作DBF数据库记录时,必须跳过位于库文件首部的库文件结构说明部分。这部分以回车符号(0DH)为结束标志。不少用户经常采用:
  for(i=0;dat!=0x0d;i++)dat=fegtc(fp);
  或while(fgetc(fp)!=0x0d);
  这两种方法将文件指针fp定位到首记录首字节处。可是这两种定位指针的方法却是错误的,因为上面两语句实际上从库结构的第一个字节开始逐个字节地读,一直到第一个内容为0DH的字节为止。这样一旦库文件结构说明部分当中出现0DH的字节,那就会出错。以下介绍两种正确的方法:
  一、若库文件共有n个字段,则文件结构说明部分长为r=32*n+33。那么就可用函数进行定位。例如,某库有20个字段,则
  r=32*20+33=672,于是用
  fseek(fp,673L,0)进行定位。此处的L不可少,它表示数据类型为长整型。
  二、由于库结构部分的第九、十两字节记载着文件结构部分的长度,因此可用下面的C函数返回该长度值:
  long ret-len(char *dbfname[])
  { short *p;
  FILE *fp;
  char buf[10];
  fp=fopen(dbfname,"rb");
  p=(short *)buf;
  fread(buf,10,1,fp);
  fclose(fp);
  return((long)*(p+4));}
  然后再用fseek()定位即可。