用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()定位即可。