//动画信息
struct aniInfo
{
char    name[50];//动画名
int        fCount; //帧数
float      deltaTime;//帧间隔
bool bLoop; //是否循环
char       fileName[100];
char describle[50];
};这样一个结构体从文件读写,除了 帧数和帧间隔数据不正确,其他的数据都正确,是什么问题呢, 读写用的MFC的CFile

解决方案 »

  1.   

    aniInfo a;
    memset((void *)&a,0,sizeof(aniInfo));
    ddd=listView->GetItemText(i,0);//获取动画名
    memcpy(a.name,ddd.GetBuffer(),ddd.GetLength()); ddd=listView->GetItemText(i,1);//获取帧数

    memcpy(&a.fCount,ddd.GetBuffer(),ddd.GetLength()); ddd=listView->GetItemText(i,2);//获取帧间隔
    memcpy(&a.deltaTime,ddd.GetBuffer(),ddd.GetLength()); ddd=listView->GetItemText(i,3);//获取是否循环
    if (ddd=="是")
    {
    a.bLoop=true;
    }
    else
    {
    a.bLoop=false;
    }
    ddd=listView->GetItemText(i,4);//获取文件路径
    memcpy(a.fileName,ddd.GetBuffer(),ddd.GetLength());

    ddd=listView->GetItemText(i,5);//获取描述
    memcpy(a.describle,ddd.GetBuffer(),ddd.GetLength());
    f.Write(&a,sizeof(aniInfo)); //当前动画信息写入文件;
      

  2.   

    bool型的得到的也正确,就
    int fCount; //帧数
     float deltaTime;//帧间隔
     这2个得到的不正确,如果改成char数组的话得到的就正确了
      

  3.   

    ddd=listView->GetItemText(i,1);//获取帧数memcpy(&a.fCount,ddd.GetBuffer(),ddd.GetLength());
    ---------------
    你这里不对,fCount是int类型,你的ddd是CString类型的,memcpy肯定不对啊
    a.fCount = _ttoi(ddd);
    改成这样,下面那个也跟着改
      

  4.   

    用CArchive来操作应该要方便一些。
      

  5.   

    直接全部用字符串了,到用的时候在atoi一下.