数据存入数据异常急需解决

 #include"function.h"
#include<stdlib.h> 
void class_score_list1()//每门课程总分
{
    struct stu*f_str;
    f_str=read_from_file();//从文件中读入数据生成结构体数组,并返回数组第一个元素的指针 
    double s1[4];//储存每门课程的总分 
    while(1)
    {
        if(f_str->is_empty=='N')
        {
            printf("%f %f %f %f\n",f_str->score[0],f_str->score[1],f_str->score[2],f_str->score[3]);
            s1[0]+=f_str->score[0];
            s1[1]+=f_str->score[1];
            s1[2]+=f_str->score[2];
            s1[3]+=f_str->score[3];
            f_str++; 
            printf("%lf %lf %lf %lf\n",s1[0],s1[1],s1[2],s1[3]); 
        }
        else
        {
            break;
        }
    }

    return;
}

第一个printf给出的是预期的结果,但是最后一个printf出错

一个是f一个是lf,取决于你到底是double还是float
read_from_file();这么写的,stu怎么定义的

print %f 是 既可输出float, 也可输出double, 即使是float也是提升为double输出; 在print中 %lf 是未定义的,所以输出时 不要使用 %lf。
而在输入时 scanf 是区别 %f 和 %lf 的。