回 帖 发 新 帖 刷新版面

主题:文件访问,高手进!急。。。

#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]

回复列表 (共3个回复)

沙发

读取的时候,注意判断就是了。
用fgets函数,可以读取文件中的一行内容,如果发现是学号、姓名等,就直接略过。

板凳

如何跳过?可以具体点么?本人是这方面的菜鸟,请您赐教!谢谢

3 楼

#define LINESIZE 45L
fseek(fp, LINESIZE, SEEK_SET);
for(i=0;i<2;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);
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册