Array Functions Reading From a File FILE Operations




![Example - Functions int Fill. Arr(FILE *flp, int gr[]) { int Status, i=0; } Example - Functions int Fill. Arr(FILE *flp, int gr[]) { int Status, i=0; }](https://slidetodoc.com/presentation_image_h2/7ec66b2755552148a24a9a184a534810/image-5.jpg)
- Slides: 5
Array & Functions Reading From a File
FILE Operations • FILE pointer declarations – FILE *flptr; • Open a file – flptr = fopen(“filename”, “r”); – “r” for read only, “w” for writing • Read from a file – same as scanf – fscanf(flptr, “%d%f %c”, &a, &b, &c); • Write to a file – same as printf – fprintf(flptr, “This is output %8. 2 fn”, w); • Close a file – fclose(flptr);
Example • Read grades from a file, find minimum, maximum, and average • fscanf returns EOF when it reaches the end of file. i=0; do { Status = fscanf(flptr, “%f”, &grd[i]); i++; } while(Status != EOF);
Example - Main #include <stdio. h> #define CLSZ 100 printf("The Maximum is: %3 dn", Max); printf("The Minimum is: %3 dn", Min); printf("The Average is: %6. 2 fn", Ave); int Fill. Arr(FILE *flp, int gr[]); int Find. Max(int gr[], int sz); int Find. Min(int gr[], int sz); double Find. Ave(int gr[], int sz); int main(void) { FILE *flptr; int Grd[CLSZ], SZ; int Min, Max; double Ave; flptr = fopen("Grades. txt", "r"); SZ = Fill. Arr(flptr, Grd); Max = Find. Max(Grd, SZ); Min = Find. Min(Grd, SZ); Ave = Find. Ave(Grd, SZ); fclose(flptr); } return(0);
Example - Functions int Fill. Arr(FILE *flp, int gr[]) { int Status, i=0; } Status = fscanf(flp, "%d", &gr[i]); while(Status != EOF) { i++; Status = fscanf(flp, "%d", &gr[i]); } return(i); int Find. Max(int gr[], int sz) { int i, max; int Find. Min(int gr[], int sz) { int i, min; min = gr[0]; for(i=1; i<sz; i++) if(gr[i] < min) min=gr[i]; } double Find. Ave(int gr[], int sz) { double ave = 0. 0; int i; for(i=0; i<sz; i++) ave+=gr[i]; ave=ave/sz; max = gr[0]; for(i=1; i<sz; i++) if(gr[i] > max) max=gr[i]; } return(max); return(min); } return(ave);