Code:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
FILE *csis;
typedef struct{
char itNo[MAX], itDes[MAX], itSal[MAX];
float itAmo;
int itQua;
} database;
int main(void);
int inputItemData(database ItemInfo[]);
int inputItemData1(database ItemInfo[]);
void outputData(database ItemInfo[], int num);
int quantitySold(database ItemInfo[], int num1, int num, int sum[MAX]);
void strsub(char *buf, char *s, int start, int end);
int main(void) {
database ItemInfo[MAX];
int num, num1, num2, sum[MAX];
float x;
csis = fopen("SalesSummary.txt", "w");
if (csis == NULL){
puts("File SalesSummary.txt could not be opened for output.");
exit(1);
}
num = inputItemData(ItemInfo) - 1;
num1 = inputItemData1(ItemInfo) - 1;
outputData(ItemInfo, num);
printf("%d", ItemInfo[2].itQua);
fclose(csis);
return 0;
}
int inputItemData(database ItemInfo[]) {
int i=0;
char buf[MAX];
char temp[MAX];
FILE *fp;
fp = fopen("ItemList.txt", "r");
if (fp == NULL) {
puts("File ItemList.txt could not be opened for input.");
exit(1);
}
while (!feof(fp)){
fgets(buf, MAX, fp);
strsub(buf, ItemInfo[i].itNo, 0, 6);
strsub(buf, ItemInfo[i].itDes, 8, 20);
strsub(buf, temp, 22, 26);
ItemInfo[i].itAmo=atof(temp);
i++;
}
fclose(fp);
return i;
}
int inputItemData1(database ItemInfo[]) {
int i=0;
char buf[MAX];
char temp[MAX];
FILE *fp;
fp = fopen("ItemSales.txt", "r");
if (fp == NULL) {
puts("File ItemSales.txt could not be opened for input.");
exit(1);
}
while (!feof(fp)){
fgets(buf, MAX, fp);
strsub(buf, ItemInfo[i].itSal, 0, 6);
i++;
}
fclose(fp);
return i;
}
void outputData(database ItemInfo[], int num) {
int i;
printf("Item Number\tItem Description\tQuanity Sold\n");
fprintf(csis, "Item Number\tItem Description\tQuanity Sold\n");
for(i=0; i<num; i++) {
printf("%s\t", ItemInfo[i].itNo);
printf("\t%s\t", ItemInfo[i].itDes);
printf("\t%.2f \n", ItemInfo[i].itAmo);
fprintf(csis, "%s\t", ItemInfo[i].itNo);
fprintf(csis, "\t%s\t", ItemInfo[i].itDes);
fprintf(csis, "\t%.2f \n", ItemInfo[i].itAmo);
}
}
int quantitySold(database ItemInfo[], int num1, int num, int sum[MAX]){
int i, x;
for(x=0; x<num1; x++){
for(i=0; i<num; i++){
if(strncmp(ItemInfo[x].itSal, ItemInfo[i].itNo) == NULL){
ItemInfo[i].itQua = ItemInfo[i].itQua + 1;
}
}
} return ItemInfo[i].itQua;
}
void strsub(char buf[], char sub[], int start, int end) {
int i, j;
for (j=0, i=start; i<=end; i++, j++)
sub[j] = buf[i];
sub[j] = '\0';
}