I cant find what is wrong with this code
This program is to read record from a file and then validate
the 5th element str[5].
From the valid check digits out of 45 recs only 5 is reported
valid. I dont know what is wrong with this code
Example of rec on file is c12543256 my name where i leave......\n
please help, am i reading the record wrongly?
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char str[107];
char temp[5], chk_digit, *c_ptr;
int weights[] = {5, 4, 3, 2}, *w_ptr;
int total=0, value, rem, check_num;
while(fgets(str,sizeof(str), fp) != NULL)
{
w_ptr = weights;
strncpy(temp,&str[1],4);
for(c_ptr=temp; *c_ptr; c_ptr++)
{
value = *c_ptr - '0';
total += value * *w_ptr++;
}
rem = total % MODULUS;
check_num = MODULUS - rem;
if( check_num < 10 )
chk_digit = check_num + '0';
else
if( check_num == 10 )
chk_digit = '0';
else
chk_digit = 'X';
if(chk_digit != str[5])
{
fprintf(prn_ptr,"\nError in code");
}
else
fputs(str,fv);
}
fprintf(prn_ptr,"\f");
}
thanks
Re: I cant find what is wrong with this code
Quote:
Originally posted by senegene
This program is to read record from a file and then validate
the 5th element str[5].
Don't know if this is your problem or not, but the 5th element of the array is str[4] not str[5]. Remember they are accessed from 0-n, not 1-n.