📄 dbf.c
字号:
#include <stdio.h>
#include <string.h>
#include <process.h>
#define MAXFIELDS 40
struct{
char name[10];
char type;
int wide;
int dec;
}f[MAXFIELDS];
void main(int argc, char *argv[])
{
char k,year,month,date,fname[12];
int i,j,n,recnum1,recnum2,reclen,fields;
long recnum,fheadlen;
FILE *fp;
argc=2;
argv[1]="actors.dbf";
if(argc>2) exit(0);
if(argc==1){
printf("\n\t Input the datebase name:");
scanf("%12s",fname);
getchar();
}
else strcpy(fname,argv[1]);
if(strchr(fname,46)==0) strcat(fname,".dbf");
if((fp=fopen(fname,"rb"))==NULL) exit(0);
getc(fp);
year=getc(fp);
month=getc(fp);
date=getc(fp);
recnum1=getw(fp);
recnum2=getc(fp);
recnum=recnum2*256+recnum1;
fheadlen=getw(fp);
reclen=getw(fp);
fseek(fp,32,0);
fields=(fheadlen-33)/32;
if(fheadlen%32==1)
printf("%s is FOXBASE database \n",fname);
else printf("%s is DBASEIII database \n",fname);
printf("date: %d - %d - %d\n",year,month,date);
printf("recnum: %ld\n headlen: %ld\n",recnum,fheadlen);
printf("reclen: %d\n fields: %d\n",reclen,fields);
printf("\n Database structure,press enter to continue....\n");
getchar();
for(i=1;i<=fields;i++)
{
fread(&f[i].name,10,1,fp);
fseek(fp,1,1);
fread(&f[i].type,1,1,fp);
fseek(fp,4,1);
fread(&f[i].wide,1,1,fp);
fread(&f[i].dec,1,1,fp);
fseek(fp,14,1);
printf("%s %c %d %d\n",f[i].name,f[i].type,f[i].wide,f[i].dec);
}
fseek(fp,fheadlen,0);
printf("\nRecords,press enter to continue....\n");
getchar();
for(i=1;i<=recnum;i++)
{
printf("#%d:",i);
getc(fp);
for(j=1;j<=fields;j++)
{
for(n=0;n<f[j].wide;n++)
{
k=getc(fp);
printf("%c",k);
}
printf(" ");
}
printf("\n");
}
fclose(fp);
printf("press enter to return");
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -