Reputation: 529
new to fscanf()...plz help
program
#include<stdio.h>
typedef struct
{
int rollnum;
char name[30];
int mark1;
int mark2;
int mark3;
}data;
int main(int argc,char* argv[])
{
int total,c1,c2,i;
char str[30];
FILE *original,*pass,*fail;
data *student;
original=fopen("C:\\Users\\user\\Desktop\\struct.txt","r");
pass=fopen("C:\\Users\\user\\Desktop\\pass.txt","w");
fail=fopen("C:\\Users\\user\\Desktop\\fail.txt","w");
for(i=0;i<5;i++)
{
fscanf(original,"%d %s %d %d %d",
&(student+i)->rollnum,
(student+i)->name,
&(student+i)->mark1,
&(student+i)->mark2,
&(student+i)->mark3);
total=student[i].mark1+student[i].mark2+student[i].mark3;
if(total>50)
fprintf(pass,"%d. %s %d\n",c1,student[i].name,total);
else
fprintf(fail,"%d. %s %d\n",c2,student[i].name,total);
c1++,c2++;
}
printf("Successful\n");
fclose(original);
fclose(pass);
fclose(fail);
return 0;
}
**struct.txt**
1 blesswin 20 40 50
2 sam 40 10 20
3 john 50 20 60
4 james 50 40 70
5 peter 10 40 80
the program is to group the students based on their total into two files...i seem to have some problem though with the fscanf function...ur help with be appreciated...thanks in advance
Upvotes: 0
Views: 1597
Reputation: 3094
Without any errors it is more difficult to pinpoint where you are having problems, but probably it has to do with the fact that you are not allocating memory for you students:
data *students;
students = malloc(number_of_students * sizeof(*students));
if (students==NULL)
printf("Error: failed to allocate memory\n");
Loading data from file into the allocated memory would look something like
for(i=0;i<number_of_students ;i++) {
fscanf(original,"%d", &(students[i].rollnum));
}
Don't forget to free up the allocate memory after you no longer need it
free(students);
Upvotes: 1