C++ 读取文件中的多个结构体,怎么确定该读取那个结构体呢,

问题遇到的现象和发生背景

用以下的方法,并不能准确地读取数据,且存在读取错误的现象

    while(1){

    fread(&vPos, sizeof(struct std_PkgVAndPos), 1, fp);
    fread(&bData1, sizeof(struct std_pkgBData), 1, fp);
    if (bData1.len==20)
    {
    cout<<vPos.len << "," << vPos.pkgId << "," << vPos.vp.id << "," << vPos.vp.mile <<"," << vPos.vp.speed << endl;
    }
    else
    {
    cout << bData1.len << "," << bData1.pkgId << "," << bData1.bData.id << "," << bData1.bData.whichRail << "," << bData1.bData.depth << "," << bData1.bData.gate<< endl;
    }
    }
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

求各位解惑,万分感谢