home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_06_03
/
v6n3010a.txt
< prev
next >
Wrap
Text File
|
1989-09-28
|
3KB
|
94 lines
Figure 1:
#define HEADER_LENGTH 256 /* Length of header record */
#define DELETE_FLAG 0xFF /* Record delete flag */
#define RECORD_SIZE 11 /* Size of record */
#define READ_ONLY_BINARY "rb" /* Compiler dependent read binary mode */
/* The record has two fields:
Number (5 characters)
Name (6 characters)
*/
#include "STDIO.H"
int main(argc, argv)
/* Reads fixed length database file */
/* The file is specified on the command line */
/* e.g. readdata filename */
int argc;
char *argv[];
{
FILE *file; /* Input file */
int ret; /* Return from functions */
char buffer[100]; /* Input buffer */
int number; /* Data item in record */
static char name[7]; /* Data item in record */
int record_number; /* Current record number */
record_number = 0;
if (argc > 1)
{
file = fopen(argv[1], READ_ONLY_BINARY);
if (file != NULL)
{
ret = fseek(file, (long) HEADER_LENGTH, 0);
if (ret == 0)
{
/* Begin reading records. Break when read returns
less than record size */
while (1)
{
ret = fread(buffer, 1, RECORD_SIZE, file);
if (ret < RECORD_SIZE)
{
printf("\n End of file");
break;
}
else
{
record_number++;
/* Check the delete flag */
if (buffer[0] == DELETE_FLAG)
{
printf("\n Deleted record %d", record_number);
}
else
{
/* Decode the record */
ret = sscanf(buffer, "%5d%6s", &number, name);
if (ret != 2)
{
printf("\n Error in record decoding %d ret %d",
record_number, ret);
}
else
{
/* Print decoded record */
printf("\n Record %d is %d %6s",
record_number, number, name);
}
}
}
}
} /* End of successful header read */
else
{
printf("\n Unable to read header record");
}
} /* End of successful open */
else
{
printf("\n Unable to open file %s", argv[1]);
}
} /* End of successful argument count */
else
{
printf("\n Usage is readdata filename");
}
exit(0);
}