主题:文件访问,高手进!急。。。
#include<stdio.h>
#include<stdlib.h>
typedef struct item{
float liter;
float math;
float english;
} item;
typedef struct student {
char learning_number[5];
char name[20];
item dispart;
} student;
typedef struct student1 {
char learning_number[5];
char name[20];
item dispart;
float zongfen;
} student1;
void main(){
student stu[3];
int i;
for(i=0;i<3;i++){
scanf("%s%s%f%f%f",stu[i].learning_number,stu[i].name,&stu[i].dispart.liter,&stu[i].dispart.math,&stu[i].dispart.english);
}
float sum=0;
FILE *fp;
fp=fopen("yincheng.txt","w");
if(fp==NULL){
printf("error");
exit(1);
}
// fprintf(fp,"学号 姓名 语文 数学 英语 总分 ");
// fprintf(fp,"\n"); 如何这两行打印进文件,而在下面读取的时候又没有问题?
for(i=0;i<3;i++){
sum=stu[i].dispart.liter+stu[i].dispart.math+stu[i].dispart.english;
fprintf(fp,"%s %s %6f %6f %6f %6f",stu[i].learning_number,stu[i].name,stu[i].dispart.liter,stu[i].dispart.math,stu[i].dispart.english,sum);
fprintf(fp,"\n");
}
fclose(fp);
student1 stud[3];
fp=fopen("yincheng.txt","r");
if(fp==NULL)
{
exit(1);
}
for(i=0;i<3;i++){
fscanf(fp,"%s %s %f %f %f %f",stud[i].learning_number,stud[i].name,&stud[i].dispart.liter,&stud[i].dispart.math,&stud[i].dispart.english,&stud[i].zongfen);
}
float max;
int j=0;
max=stud[0].zongfen;
for(i=1;i<3;i++){
if(max<stud[i].zongfen){
max=stud[i].zongfen;
j=i;
}
}
printf("%s %s %6f %6f %6f %6f",stud[j].learning_number,stud[j].name,stud[j].dispart.liter,stud[j].dispart.math,stud[j].dispart.english,stud[j].zongfen);
printf("\n");
fclose(fp);
}[u][/u][u]fprintf(fp,"学号 姓名 语文 数学 英语 总分 "); // fprintf(fp,"\n"); 如何这两行打印进文件,而在下面读取的时候又没有问题?[/u]
#include<stdlib.h>
typedef struct item{
float liter;
float math;
float english;
} item;
typedef struct student {
char learning_number[5];
char name[20];
item dispart;
} student;
typedef struct student1 {
char learning_number[5];
char name[20];
item dispart;
float zongfen;
} student1;
void main(){
student stu[3];
int i;
for(i=0;i<3;i++){
scanf("%s%s%f%f%f",stu[i].learning_number,stu[i].name,&stu[i].dispart.liter,&stu[i].dispart.math,&stu[i].dispart.english);
}
float sum=0;
FILE *fp;
fp=fopen("yincheng.txt","w");
if(fp==NULL){
printf("error");
exit(1);
}
// fprintf(fp,"学号 姓名 语文 数学 英语 总分 ");
// fprintf(fp,"\n"); 如何这两行打印进文件,而在下面读取的时候又没有问题?
for(i=0;i<3;i++){
sum=stu[i].dispart.liter+stu[i].dispart.math+stu[i].dispart.english;
fprintf(fp,"%s %s %6f %6f %6f %6f",stu[i].learning_number,stu[i].name,stu[i].dispart.liter,stu[i].dispart.math,stu[i].dispart.english,sum);
fprintf(fp,"\n");
}
fclose(fp);
student1 stud[3];
fp=fopen("yincheng.txt","r");
if(fp==NULL)
{
exit(1);
}
for(i=0;i<3;i++){
fscanf(fp,"%s %s %f %f %f %f",stud[i].learning_number,stud[i].name,&stud[i].dispart.liter,&stud[i].dispart.math,&stud[i].dispart.english,&stud[i].zongfen);
}
float max;
int j=0;
max=stud[0].zongfen;
for(i=1;i<3;i++){
if(max<stud[i].zongfen){
max=stud[i].zongfen;
j=i;
}
}
printf("%s %s %6f %6f %6f %6f",stud[j].learning_number,stud[j].name,stud[j].dispart.liter,stud[j].dispart.math,stud[j].dispart.english,stud[j].zongfen);
printf("\n");
fclose(fp);
}[u][/u][u]fprintf(fp,"学号 姓名 语文 数学 英语 总分 "); // fprintf(fp,"\n"); 如何这两行打印进文件,而在下面读取的时候又没有问题?[/u]