首页 文章

尝试从二进制文件中读取数据,但未将其放入struct中

提问于
浏览
0

编辑代码更简单,没有链表指针 .

这是我的结构

typedef struct megye
{ 
    int megye;
    int hektar1_min;
    int hektar1_max;
    int hektar1_tam;
    int hektar2_min;
    int hektar2_max;
    int hektar2_tam;
    int hektar3_min;
    int hektar3_tam;

}megye;

我试过没有“struct _megye * next;”也行 .

这是我的代码:

int main()
{
    FILE *fb;
    megye*p;

    p=(megye*)calloc(8,sizeof(megye));

    fb=fopen("tamogatas.dat", "rb");
    if (fb==NULL)
    {
        printf("couldn't open file");
    }
    while (fread(p, sizeof (megye), 7, fb))
    {
        printf("%d\n", p->megye);
    }
    fclose(fb);
    _CrtDumpMemoryLeaks();
    free(p);
    return 0;
}

这是我从文本文件中转换为二进制文件的一行,我在这里使用:

1 50 100 2 100 200 4 200 6

我的目标是将每个数字放在一行中的int中 .

该程序运行,在结构中放置随机数(总是在变化,从6位到大约13-14的长数字) . 调试器说他的fread函数读取文件的第一行(fread的_base字符串),但它根本没有把它放在结构中 . 我需要做什么才能将我的数字输入结构中?

请简单,我两天没有睡觉:(

编辑:我必须使用二进制文件,因为它是功课 .

1 回答

  • 1

    example of one record read/write to binary file

    int main(){
        FILE *fb;
        megye orig = {1, 50, 100, 2, 100, 200, 4, 200, 6 };
        megye *p;
    
        fb=fopen("megye.dat", "wb");
        fwrite(&orig, sizeof(megye), 1, fb);//1 record of struct megye to binary file of megye.dat
        fclose(fb);
    
        p=(megye*)calloc(1, sizeof(megye));//memory ensure 1 record of struct megye
    
        fb=fopen("megye.dat", "rb");
        if (fb==NULL)
        {
            printf("couldn't open file");
        }
        while (1==fread(p, sizeof(megye), 1, fb))//1 :read number of record
        {
            printf("%d %d ...\n", p->megye, p->hektar1_min);
        }
        fclose(fb);
        //_CrtDumpMemoryLeaks();
        free(p);
        return 0;
    }
    

相关问题