C中结构的Malloc

C中结构的Malloc,c,struct,malloc,C,Struct,Malloc,所以我必须做一个c程序,读取一个文本文件,用一个额外的值(平均值)将它存储在一个结构中,然后用fread将这个结构输出到一个新的结构中。然而,这些信息并没有传播到任何地方。我几乎可以肯定的是,malloc不知道如何分配适当的内存量(C++和Java有点宠坏了我) #包括 #包括 #包括 类型定义结构学生{ int-id; 浮标[10]; 浮动gpa; }学生; int main(){ 文件*infle,*bin; int i,总和,长度; 字符输入[45]; 字符换行符; infle=fopen

所以我必须做一个c程序,读取一个文本文件,用一个额外的值(平均值)将它存储在一个结构中,然后用fread将这个结构输出到一个新的结构中。然而,这些信息并没有传播到任何地方。我几乎可以肯定的是,malloc不知道如何分配适当的内存量(C++和Java有点宠坏了我)

#包括
#包括
#包括
类型定义结构学生{
int-id;
浮标[10];
浮动gpa;
}学生;
int main(){
文件*infle,*bin;
int i,总和,长度;
字符输入[45];
字符换行符;
infle=fopen(“Assign6.dat”、“r”);
bin=fopen(“Assign6out.dat”、“wb+”);
学生电流;
//而(!feof(infle)){
总和=0;
fgets(输入、尺寸(输入)、填充);
SLENGHT=strlen(输入);
sscanf(输入、%d\n、&(current.id));
对于(i=0;i<6;i++){
sscanf(输入、%lf)和(当前标记[i]);
总和+=当前标记[i];
}
current.gpa=sum/6;
fwrite(当前和当前),sizeof(学生),1,bin;
//  }
fclose(infle);
学生更新;
fseek(bin,0,SEEK_SET);
fread(&更新,1,sizeof(学生),bin);
fclose(bin);
printf(“%d,%.1lf\n”,更新的.id,更新的.marks[0]);
}
输入文件是这样的

122456 1.0 2.0 3.0 4.0 5.0 6.0 122456 1.0 2.0 3.0 4.0 5.0 6.0 输出是

122456, 0.0 122456, 0.0 有人能帮我吗?我环顾四周,但找不到任何适合我的东西


第一个职位,所以要友好请

这里的问题最有可能是由于:结构成员
标记
是一个
浮点
数组,但您尝试使用
%lf”
格式解析文本文件中的值,该格式需要指向
双精度
的指针。指向
浮点
的指针与指向
双精度
的指针不同

sscanf
格式更改为
%f”
,它应该工作得更好


我建议您阅读,它有一个非常好的表格,包含了不同的格式和它们期望的参数。

what
malloc()
?我在任何地方都没有看到对
malloc()
的调用。如果“信息不在任何地方”,你说的这个输出是什么?很好,你在(!feof(infle))循环时注释掉了
,因为该循环不会像你预期的那样工作。这是因为在尝试从文件末尾以外的位置读取之前,不会设置
EOF
标志。您应该做的是,例如,
while(fgets(…)!=NULL)
。我想我可能需要在某个地方添加它?现在我正试着用sizeof来代替。我相当确定我需要在读写之前以某种方式对结构进行Malloc。现在,输出正在进行jsut测试,以查看读写操作是否有效。正如你所看到的,它接受标识符,但没有标记进入结构中。我已经测试了while循环输入,我可以确认它正确地输入了信息。我忘了我从doubles改为float。然而,在做了这个改变之后,它并没有改变结果。我现在还要读那篇文章 122456, 0.0