comparing fields in a text file
Hi,
I have got myself messed up....
I am trying to read two text files which have these structures
Code:
typedef struct {
char bus_tran_code [I_BUS_TRAN_CODE_LEN];
char upddate [I_UPDDATE_LEN];
char rectype [I_RECTYPE_LEN];
char custcode [I_CUSTCODE_LEN];
char usernbr [I_USERNBR_LEN];
char username [I_USERNAME_LEN];
char custname [I_CUSTNAME_LEN];
char nwcode [I_NWCODE_LEN];
char confdna [I_CONFDNA_LEN];
char dnaver [I_DNAVER_LEN];
char gtynbr [I_GTYNBR_LEN];
char fromdate [I_FROMDATE_LEN];
char todate [I_TODATE_LEN];
char rfsdate [I_RFSDATE_LEN];
char billdate [I_BILLDATE_LEN];
char stopdate [I_STOPDATE_LEN];
char invcentre [I_INVCENTRE_LEN];
char billflag [I_BILLFLAG_LEN];
char linkspeed [I_LINKSPEED_LEN];
char prtcoltyp [I_PRTCOLTYP_LEN];
char shared [I_SHARED_LEN];
char linkname [I_LINKNAME_LEN];
char zero1 [I_ZERO1_LEN];
char stopflag [I_STOPFLAG_LEN];
char st_service [I_ST_SERVICE_LEN];
char cnxtype [I_CNXTYPE_LEN];
char zero2 [I_ZERO2_LEN];
char optionflag [I_OPTIONFLAG_LEN];
char cpeflag [I_CPEFLAG_LEN];
char linkcode [I_LINKCODE_LEN];
char site [I_SITE_LEN];
char nodename [I_NODENAME_LEN];
char semicolon1 [I_SEMICOLON1_LEN];
char separator1 [I_SEPARATOR1_LEN];
} RecordIn1;
typedef struct {
char subscr_no [I_SUBSCR_NO_LEN];
char subscr_no_resets [I_SUBSCR_NO_RESETS_LEN];
char dnic [I_DNIC_LEN];
char dna [I_DNA_LEN];
char ud_user_id [I_UD_USER_ID_LEN];
char inv_ncc [I_INV_NCC_LEN];
char owner_ncc [I_OWNER_NCC_LEN];
char st_servtcode [I_ST_SERVTCODE_LEN];
char bill_date [I_BILL_DATE_LEN];
char stop_date [I_STOP_DATE_LEN];
char stop_core_date [I_STOP_CORE_DATE_LEN];
char order_entry_date [I_ORDER_ENTRY_DATE_LEN];
char rfs_date [I_RFS_DATE_LEN];
char equant_stop_date [I_EQUANT_STOP_DATE_LEN];
char activity_date [I_ACTIVITY_DATE_LEN];
char semicolon2 [I_SEMICOLON2_LEN];
char separator2 [I_SEPARATOR2_LEN];
} RecordIn2;
which are dumps from database tables. I want to compare the stop date from file one with the stop date from file two connected by RecordIn1.nwcode & RecordIn1.confdna with RecordIn2.dnic & RecordIn2.dna. If the stop date from file one is not found in file two against that key, then it will be written to another file.
I have the program opening and closing the files without error, but have come unstuck traversing through the files and checking the fields....
Code:
eof1 = fread(&input1, sizeof(RecordIn1), 1, p_fp[IN_FILE1]);
if(!eof1)
{
extracted_records_read++;
strncpy(input1_key, input1.nwcode, 15);
*(input1_key+15) = NULL;
}
else memcpy(input1_key, HIGH_VALUE, 15);
eof2 = fread(&input2, sizeof(RecordIn2), 1, p_fp[IN_FILE2]);
if(!eof2)
{
exception_records_read++;
strncpy(input2_key, input2.dnic, 14);
*(input2_key+14) = '0';
*(input2_key+15) = NULL;
}
else memcpy(input2_key, HIGH_VALUE, 15);
while (!eof1 || !eof2)
{
if(!memcmp(input1_key, input2_key, 15))
{
memcpy(&output1, &input1, sizeof(RecordIn1));
memcpy(output1.stop_date, input2.stop_date, 10);
fwrite(&output1, sizeof(RecordIn1), 1, p_fp[OUT_FILE1]);
extracted_records_written++;
exception_records_written++;
eof1 = fread(&input1, sizeof(RecordIn1), 1, p_fp[IN_FILE1]);
if(!eof1)
{
extracted_records_read++;
strncpy(input1_key, input1.nwcode, 15);
*(input1_key+15) = NULL;
}
else memcpy(input1_key, HIGH_VALUE, 15);
eof2 = fread(&input2, sizeof(RecordIn2), 1, p_fp[IN_FILE2]);
if(!eof2)
{
exception_records_read++;
strncpy(input2_key, input2.dnic, 14);
*(input2_key+14) = '0';
*(input2_key+15) = NULL;
}
else memcpy(input2_key, HIGH_VALUE, 15);
}
if(!compare(output1.stop_date, input2.stop_date))
/* write out record */
}
unfortunately, the more I change it, the worse it gets :(
tia,