/* item_list_add2.c Author: Murray Saul Date: March 18, 2008 Purpose: Use multiple arrays to store both characters and ints... */ #define ARRAY_SIZE 3 #define ITEM_NUM_SIZE 4 + 1 #define ITEM_NAME_SIZE 40 + 1 int enterItems(char itemNumber[][ITEM_NUM_SIZE], char itemName[][ITEM_NAME_SIZE], int itemQuantity[]); void displayItems(char itemNumber[][ITEM_NUM_SIZE], char itemName[][ITEM_NAME_SIZE], int itemQuantity[]); void clearInput(); #include main() { FILE *fp_in; char itemNumber[ARRAY_SIZE][ITEM_NUM_SIZE]; char itemName[ARRAY_SIZE][ITEM_NAME_SIZE]; int itemQuantity[ARRAY_SIZE]; int i, numberOfItems; numberOfItems = enterItems(itemNumber, itemName, itemQuantity); displayItems(itemNumber, itemName, itemQuantity); fp_in = fopen("items.dat", "a"); if (fp_in == NULL) printf ("Cannot open the \"items.dat\" database file\n"); else { for (i=0; i < numberOfItems; i++) fprintf(fp_in, "%s;%s;%d\n", itemNumber[i], itemName[i], itemQuantity[i]); fclose(fp_in); /* i.e. remember to close the file */ } /* End of else statement */ } /* end of main program */ void clearInput() { while (getchar() != '\n') ; } /* end of clearInput() function */ int enterItems(char itemNumber[][ITEM_NUM_SIZE], char itemName[][ITEM_NAME_SIZE], int itemQuantity[]) { int i, result1, result2, result3; printf ("\n"); for(i=0; i < ARRAY_SIZE; i++) { do { printf ("Item [%d] code: ", i+1); result1 = scanf("%[A-Z0-9][^\n]", itemNumber[i]); clearInput(); } while (( result1 != 1 ) && printf ("Invalid - ")); do { printf ("Item [%d] Description: ", i+1); result2 = scanf("%[^\n]", itemName[i]); clearInput(); } while (( result2 != 1 ) && printf ("Invalid - ")); do { printf ("Item [%d] QTY: ", i+1); result3 = scanf("%d", &itemQuantity[i]); clearInput(); } while (( result3 != 1 ) && printf ("Invalid - ")); printf ("\n"); } /* End of for loop */ return i; } /* End of enterItems() function */ void displayItems(char itemNumber[][ITEM_NUM_SIZE], char itemName[][ITEM_NAME_SIZE], int itemQuantity[]) { int i; printf ("ITEM REPORT\n"); printf ("===========\n\n"); printf ("%-8s%-25s%8s\n", "Code", "Description", "Quantity"); printf ("%-8s%-25s%8s\n", "----", "-----------------------", "--------"); for (i=0; i < ARRAY_SIZE; i++) printf ("%-8s%-25s%8d\n", itemNumber[i], itemName[i], itemQuantity[i]); printf ("\n\n"); } /* End of displayItems() function */