Code:
#include<stdlib.h>
#include<stdio.h>
#define size 1
struct students
{
char last[15], first [15];
int t1,t2,t3;
float avg;
char grade;
};
void load (struct students s[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf("Enter last name");
gets(s[i].last);
printf("Enter first name");
gets(s[i].first);
printf("Enter three scores");
scanf("%d%d%d",&s[i].t1,&s[i].t2, &s[i].t3);
s[i].avg=(s[i].t1+s[i].t2+s[i].t3)/(float)3;
if(s[i].avg>70)
s[i].grade ='P';
else
s[i].grade ='F';
fflush(stdin);
}
}
void print(struct students s[],int n)
{
int i;
for (i=0; i<n; i++)
{
printf("%s%s\n",s[i].first, s[i].last);
printf("test scores: %d %d %d \n",s[i].t1, s[i].t2, s[i].t3);
printf("average grade: %f %%\n\n",s[i].avg, s[i].grade);
}
}
void sort(struct students s[], int n)
{
int i,j;
students t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if (s[i].avg<s[j+1].avg)
{
t=s[i];
s[i]=s[j+1];
s[j+1]=t;
}
}
void pass(struct students s[], int n) //Source.cpp<-- line 55
{
int count=0, i;
for(i=0; i<n; i++)
if (s[i].grade = 'P')
count ++;
printf("number of passes %d\n\n",count);
}
void savetext(struct students s[], int n)
{
int i;
FILE *f; //file pointer
f=fopen("C:\\ student.txt","w"); //("C:\\student.txt")<- C will greate the file if dont exist but C will not create the folder
for (i=0; i<n; i++)
{
fprintf(f,"%s\n",s[i].last);
fprintf(f,"%s\n",s[i].first);
fprintf(f,"%d%d%d%f%c\n",s[i].t1, s[i].t2,s[i].t3,s[i].avg,s[i].grade);
}
fclose(f);
}
void gettext(struct students s[], int n) //<---- struct (name)
{
int i;
FILE *f;
f= fopen("c:\\students.txt","r"); //<---- \\ name
for(i=0; i<n; i++)
{
fgets(s[i].last,sizeof(s[i].last),f);
fgets(s[i].first,sizeof(s[i].first),f); // \n acts like an fflush
fscanf(f,"%d%d%d%f%c\n", &s[i].t1, &s[i].t2,&s[i].t3, &s[i].avg,&s[i].grade);
}
fclose(f);
}
void savebin(struct students s[],int n)
{
FILE *f;
f=fopen("c:\\students.bin","wb");
fwrite(&s,sizeof(s[0]),n,f); //&s is a reference to the array to save sizeof(s[0]) size of each array element
//n is how many array elements are there
//f is file pointer
fclose(f);
}
void getbin(struct students s[],int n)
{
FILE *f;
f=fopen("c:\\students.bin","rb");
fread(&s,sizeof(s[0]),n,f);
fclose(f);
}
void main()
{
students s[size];
load(s,size);
sort(s,size);
print(s,size);
pass(s,size);
savetext(s,size);
gettext(s,size);
print(s,size);
savebin(s,size);
getbin(s,size);
print(s,size);
system("pause");
}