if(nType&DATE)
{
   for(i=0;i<1000;i++)
   {
       date[i]=SDate[i].date;
   }
   ....
}
if(nType&NAME)
{
   for(i=0;i<1000;i++)
   {
       name[i]=SDate[i].name;
   }
}

解决方案 »

  1.   

    if(nType&DATE)
      for(i=0;i<1000;i++)
        date[i]=SDate[i].date;
    else
      for(i=0;i<1000;i++)
        name[i]=SDate[i].name;
    ......
      

  2.   

    my8848 可能理解错误了,如果 nType&DATE = TRUE,nType&NAME也可能 = TRUE的。
    这样吧:(呵呵,看起来好象太复杂啦。)
    BYTE bit = 1;
    struct { DATA* data1, DATA* data2 } arrData[8];
    arrData[0].data1 = &date[0].name;
    arrData[1].data1 = &date[0].date;
    ...
    arrData[0].data2 = &SDate[0].name;
    arrData[1].data2 = &SDate[0].date;
    ...
    for(k = 0; k < 8 && nType; k++)
    {
      if(nType & bit) 
      {
        for(i = 0; i < 1000; i++) 
        {
          *(arrData[k].data1 + i) = *(arrData[k].data2 + i);
        }
        nType ^= bit;
      }
      bit <<= 1;
    }
      

  3.   

    不好意思,我写错了,误导了大家
    我的结构体的值其实是从文件中读取的,并不是从外面传进来的
    其实过程是这样的:
    for(i=0;i<1000;i++)
    {
        file.Read(&SDate,sizeof(SMyStruct))
        if(nType&DATE)date[i]=SDate.date;
        ....
        if(nType&NAME)name[i]=SDate.name;
    }