Answer:
Check the explanation
Step-by-step explanation:
defs.h
#ifndef DEFS_H
#define DEFS_H
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char item[20];
char quantity[10];
int calories;
float protein;
float carbs;
float fats;
} food;
int size;
void printArray(int size, food arr1[]);
#endif
arrayProcessing.c
#include "defs.h"
void printArray(int size, food arr1[])
{
int i = 0;
printf("\\FOOD ITEM\t\tQUANTITY\tCALS\tPRO\tCARBS\tFAT");
for (i = 0; i < size; i++)
{
printf("\\%i.%s", i + 1, arr1[i].item);
printf("\t\t%s", arr1[i].quantity);
printf("\t\t%i", arr1[i].calories);
printf("\t%.2f", arr1[i].protein);
printf("\t%.2f", arr1[i].carbs);
printf("\t%.2f\\", arr1[i].fats);
}
}
lab12.c
#include "defs.h"
int main(int argc, char *argv[])
{
int i = 0;
FILE *inFile;
inFile = fopen(argv[1], "r");
if(inFile==NULL){
fprintf(stderr, "File open error. Exiting program\\");
exit(1);
}
fscanf(inFile, "%i", &size);
food *arr = (food *)malloc(sizeof(food)*size);
for (i = 0; i < size; i++)
{
fscanf(inFile, "\\%[^\\]s", arr[i].item);
fscanf(inFile, "%s", arr[i].quantity);
fscanf(inFile, "%i", &arr[i].calories);
fscanf(inFile, "%f", &arr[i].protein);
fscanf(inFile, "%f", &arr[i].carbs);
fscanf(inFile, "%f", &arr[i].fats);
}
printArray(size, arr);
return 0;
}
Kindly check the Output below,