Everything seems okay and program is running but my report.txt file is empty. There is one warning - "passing argument 2 of 'fwrite' makes integer from pointer without a cast". What might be a problem? (Here is a bit of the code)
int main(int argc, char *argv[]) {
FILE *fr = fopen("report.txt", "wb");
FILE *db = NULL;
if (argc > 1) // open database file for reading, provide a parameter or use default "db.bin"
db = fopen(argv[1], "rb");
else
db = fopen("db.bin", "rb");
if (db) {
Student students[1000]; // all the data goes here
int size = 20; // how many students in database
fread(&size, sizeof(int), 1, db); // reading data from file
for (int i = 0; i < size; i++)
fread(&students[i], sizeof(Student), 1, db);
printf("%d records loaded succesfully\n", size);
// MODIFY CODE BELOW
int counterDemo = 0; // for counting students
for (int i = 0; i < size; ++i) { // process all the student records in database
Student s = students[i]; // store data for each student in s
if(s.load == 0) { // *** first filter, conditions on the student
printf("Name - %s, surname - %s, course - %d, average grade - %f, number of courses %d\n ",
s.name, s.surname, s.course, s.average, s.load);
int anotherDemo = 0; // for counting courses/grades
for (int i = 0; i < s.load; ++i) { // process each course taken by the student
if(1) { // *** second filter, conditions on the course/grade
++anotherDemo; // counting courses
printf("Course name - %s, course grades - %d\n ",
s.courses[i], s.grades[i]);
}
}
printf("Languages - %s\n", s.languages);
printf("\n");
if (anotherDemo == s.load) // *** third filter, various other conditions
++counterDemo; // counting studfents
fwrite("%s %s",
&s.name, &s.surname, fr);
}
}
printf("Filter applied, %d students found\n",
counterDemo); // how many passed the filters
fclose(db);
} else
printf("File db.bin not found, check current folder\n");
return 0;
}