fscanf()的新手... plz help
程序
#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
该计划是根据他们的总数将学生分组为两个文件...我似乎有一些问题,但fscanf功能...你的帮助,赞赏...提前感谢
答案 0 :(得分:1)
没有任何错误,更难以确定您遇到问题的地方,但可能与您没有为您的学生分配内存这一事实有关:
data *students;
students = malloc(number_of_students * sizeof(*students));
if (students==NULL)
printf("Error: failed to allocate memory\n");
将文件中的数据加载到分配的内存中看起来像
for(i=0;i<number_of_students ;i++) {
fscanf(original,"%d", &(students[i].rollnum));
}
不要忘记在不再需要它后释放分配内存
free(students);