Code:This is what i have written so far but for some reason when passing the data back and forth from the getdata function it either does not work or does not record the correct numerical data, any help would be great #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_ELMNTS 100 #define ANLYS_RNG 20 typedef struct { char color[MAX_ELMNTS]; char size[MAX_ELMNTS]; int qty[ANLYS_RNG]; double price[ANLYS_RNG]; } PAINTDATA; void getdata (PAINTDATA paint1, PAINTDATA piant2, PAINTDATA paint3, PAINTDATA paint4); void printdata (PAINTDATA* pdata1,PAINTDATA* pdata2, PAINTDATA* pdata3, PAINTDATA* pdata4); //Functions in Other File int main() { PAINTDATA paint[4]; PAINTDATA* pdata[4]; pdata[4] = &paint[4]; getdata (&paint[0], &paint[1], &paint[2], &paint[3]); printdata (&paint[0], &paint[1], &paint[2], &paint[3]); return 0; } void getdata (PAINTDATA paint1, PAINTDATA paint2, PAINTDATA paint3, PAINTDATA paint4) { FILE* infile; infile = fopen("paint.data", "r"); if(infile == NULL) { printf ("There is no such file\n\n"); exit(1); } fscanf(infile, "%s %s %d %lf", paint1.color, paint1.size, &paint1.qty, &paint1.price); fscanf(infile, "%s %s %d %lf", paint2.color, paint2.size, &paint2.qty, &paint2.price); fscanf(infile, "%s %s %d %lf", paint3.color, paint3.size, &paint3.qty, &paint3.price); fscanf(infile, "%s %s %d %lf", paint4.color, paint4.size, &paint4.qty, &paint4.price); return; } void printdata (PAINTDATA* pdata1,PAINTDATA* pdata2, PAINTDATA* pdata3, PAINTDATA* pdata4) { printf("%s %s %d %lf\n\n", pdata1->color, pdata1->size, pdata1->qty, pdata1->price); printf("%s %s %d %lf\n\n", pdata2->color, pdata2->size, pdata2->qty, pdata2->price); printf("%s %s %d %lf\n\n", pdata3->color, pdata3->size, pdata3->qty, pdata3->price); printf("%s %s %d %lf\n\n", pdata4->color, pdata4->size, pdata4->qty, pdata4->price); return; }