| 
         Displaying  Source Code(s)   
  
        
 
         
        
          
             | 
            
             | 
           
          
             
              
                
                To acess the dbf database files and maupulate from the c 
                 
                -------------------------------------------------------------------------------- 
                 
                Description : this program is a good database connectivity 
                application in c  
                 
                Code : 
                 
                #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<BR>,argv[1]); 
                exit(1); 
                } 
                break; 
                default: fprintf(stderr,"Usage: %s dbase_file >  
                database<BR>,argv[0]); 
                fprintf(stderr,"Or: cat dbase_file | %s >database<BR>,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<BR>); 
                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<nfield;i++) 
                { 
                printf("%s%c",field_name[i],i==nfield-1?' 
                ':' '); 
                } 
                 
                // for (i=0;i<nfield;i++) printf( "!%s%c", 
                field_name[i],i==nfield-1?' 
                ':' '); 
                field_pos[nfield]=pos; /* one extra for length calculation of 
                last  
                field 
                */ 
                // printf(" 
                %s",field_name[3].data); 
                fread(&i,1,1,in); /*read field terminator */ 
                if (i!=0xD) 
                { fprintf(stderr,"Illegal field terminator; more than %d 
                fields?<BR>,MAXFIELDS); 
                exit(1); 
                } 
                 
                lrec=header.lrec; 
                record=malloc(lrec); 
                for (i=1;i<header.nrec;i++) 
                { 
                if (fread(record,lrec,1,in)!=1) 
                { 
                fprintf(stderr,"Error reading record %d<BR>,i+1); 
                exit(1); 
                } 
                 
                if (*record!='*') /* if not a deleted record */ 
                for (j=1;j<nfield;j++) 
                { 
                if(j==1) 
                { 
                p=record+field_pos[j]+1; /* first char of the field */ 
                q=record+field_pos[j+1]-1; /* last char of the field */ 
                while (*p==' ' && p<=q) p++; /* remove leading spaces */ 
                while (*q==' ' && p<=q) *(q--)=' 
                 
                -------------------------------------------------------------------------------- 
  | 
               
             
             | 
           
           
           |