/*TITLE supermarket pricing main program */ /****keyword-flag*** "%v %f %n" */ /* "10 20-Mar-98,20:14:10 SUPERT.CPP" */ #include #include #include "superm.h" void process(PriceFile* price_file, FILE *UPC_file); extern long lookup_count; extern long hit_count; int main(int argc, char *argv[]) { PriceFile* price_file; FILE *UPC_file; if (argc < 3) { printf("Usage: supert price_file code_file\n"); exit(1); } price_file = initialize_price_file(argv[1],KEEP_FILE); UPC_file = fopen(argv[2],"r+"); setvbuf(UPC_file,NULL,_IOFBF,32000); process(price_file,UPC_file); terminate_price_file(price_file); fclose(UPC_file); printf("Hit rate: %3.2f\n",((float)hit_count/(float)lookup_count)); return 0; } void process(PriceFile* price_file,FILE *UPC_file) { ItemRecord *item_record_ptr; char ascii_code_number[100]; int status; char upc[11]; char description[100]; int i; char *result; for (i = 0; ; i ++) { result = fgets(ascii_code_number,100,UPC_file); if (result == NULL) break; ascii_code_number[10] = 0; status = lookup_record(price_file,ascii_code_number, &item_record_ptr); if (status == FOUND) { BCD_to_ascii(upc,&item_record_ptr->upc[0],ASCII_KEY_SIZE); radix40_to_ascii((unsigned char*)description, &item_record_ptr->description[0], DESCRIPTION_CHARS); /* printf("%s:%s:%u\n",upc,description,item_record_ptr->price); */ } else if (status == NOT_IN_FILE) printf("Item #%s not found\n",ascii_code_number); } }