123 Eng

Engineering the engineers™


Latest Jobs   Forum Map

 


Home
Source Codes
Engineering Colleges

Training  Reports
Seminar Reports
Placement Papers

Forums

   Computer Science / IT
   Electronics
   Electrical
   Mechanical
   Chemical
   Civil

   CAT / MBA

   GMAT / Foreign MBA
Latest Jobs

Engineering Jobs / Technical Jobs
Management Jobs

Sitemap
Terms of use

Displaying  Source Code(s)  
 

 
To Retrieve and manipulate .dbf files through c program (Mini Project)

--------------------------------------------------------------------------------

Description : I had devloped this progarme during my training in Sixth semester B.E.(comp Sc.).this program effectively connects .dbf database files in the c program and performs various functions on it

Code :

// This is devloped by narender

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXFIELDS 1000
#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+2);
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]; /* 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--)='
 

 

 

Contribute content or training reports / feedback / Comments
job placement papers
All rights reserved © copyright 123ENG