#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MAXFIELDS 1000 /* maximum nr of fields */
#include"mem.h "
#include"string.h"
void main(int argc, char *argv[])
{ char *p,*q,*r,*buf;
typedef char string11[12];
FILE *in,*out,*out1;
int a,i,j,n,field_pos[MAXFIELDS+1],nfield=0,pos,lrec;
char *record,field_type[MAXFIELDS];
// string11 field_data[500];
string11 field_name[MAXFIELDS];
struct
{
char version; /* dBase version */
char datum[3]; /* date of last update YYMMDD */
long nrec; /* nr of records in th database file */
short nhead; /* nr of bytes in the header */
short lrec; /* nr of bytes in the record */
char dum1[2];
char transact; /* flag for incomplete transaction */
char encrypt; /* encryption flag */
char mdx; /* flag for presence of mdx-file */
char dum2[3];
}
header;
struct
{
char name[11]; /* fieldname zero filled */
char type; /* field type (C, D, F, L, M, N) */
char dum1[4];
unsigned char length; /* field length in binary */
char ndec; /* field decimal count in binary */
char dum2[2];
char workid; /* work area ID */
char dum3[11];
char data[10];
}
field;
switch(argc)
{
case 1: in=stdin;
break;
case 2:
if ((in = fopen(argv[1],"rb")) == NULL)
{
fprintf(stderr,"Input file %s not found,argv[1]);
exit(1);
}
break;
default: fprintf(stderr,"Usage: %s dbase_file >database,argv[0]);
fprintf(stderr,"Or: cat dbase_file | %s >database,argv[0]);
exit(1);
}
fread(&header,32,1,in);
n=header.lrec;
pos=1;
// a=field_name[3];
while (n>1)
{
if (nfield==MAXFIELDS)
{
fprintf(stderr,"Too many fields
);
exit(1);
}
fread(&field,32,1,in);
strcpy(field_name[nfield],field.name);
field_type[nfield]=field.type;
// printf("FIELD: %s",field_name[3]);
field_pos[nfield++]=pos;
pos+=(int)field.length;
n-=(int)field.length;
}
for (i=1;i
exit(1);
}
lrec=header.lrec;
record=malloc(lrec);
for (i=1;i
exit(1);
}
No comments:
Post a Comment