C 在堆部分声明结构时,Fread没有读取?

C 在堆部分声明结构时,Fread没有读取?,c,file,fwrite,fread,C,File,Fwrite,Fread,在堆部分声明结构时,Fread没有读取?我可以在文件中写入,但当我尝试读取文件时,我遇到了分段错误。我的代码如下,请帮助我修复 下面第一个代码用于在文件中写入结构数据,该结构存储在堆部分,第二个代码用于读取文件的内容 作者来源 读码器 您只为一个struct st分配了空间,但尝试访问其中的5个 要分配5,do var=malloc5*sizeof*var 另外,您打开文件5次,fp=fopenhai,w;线应该在循环之后。您应该检查它是否成功。尝试以下方法: if(fp == NULL) {

在堆部分声明结构时,Fread没有读取?我可以在文件中写入,但当我尝试读取文件时,我遇到了分段错误。我的代码如下,请帮助我修复

下面第一个代码用于在文件中写入结构数据,该结构存储在堆部分,第二个代码用于读取文件的内容

作者来源

读码器


您只为一个struct st分配了空间,但尝试访问其中的5个

要分配5,do var=malloc5*sizeof*var

另外,您打开文件5次,fp=fopenhai,w;线应该在循环之后。您应该检查它是否成功。

尝试以下方法:

if(fp == NULL)
{
    return 1;
}

佛罗里达州1号sizeofstruct街fread&var1号;这里的var1已经是一个指针。不要在这里使用&here。阅读循环中的每一个结构,你们只阅读第一项。我做了你们说的更改,但仍然是分段错误。你们能编辑我的代码并显示吗?不,这不是这个网站的工作方式。张贴您所做的更改。另外,调试您的程序。你应该弄清楚故障发生在哪条线路上,然后就可以知道原因了。
#include<stdio.h>
#include<stdlib.h>
struct st
{
    int roll;
    char name[11];
    float marks;
};
int main()
{
    int i;
    struct st *var1;

    var1=malloc(sizeof(struct st)*5);
    FILE *fp;
    fp=fopen("ha","r");
    fread(&var1,sizeof(struct st),1,fp);
    for(i=0;i<5;i++)   // I M GETTING SEGMENTATION FAULT?
    {
        printf("%d\n",var1[i].roll);
        printf("%s\n",var1[i].name);
        printf("%f\n",var1[i].marks);
    }
}
if(fp == NULL)
{
    return 1;
}