首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

继续问个结构的有关问题

2012-04-18 
继续问个结构的问题结构体是这样的C/C++ code struct TJList{char xh[7]char xz[5]}typedef TJList* Mj

继续问个结构的问题
结构体是这样的

C/C++ code
 struct TJList         {          char xh[7];          char xz[5];         };        typedef TJList* Mjlist;

一段字符串的每一行都包含一个xh、xz,取出后赋值,再添加到list队列中,如下
C/C++ code
      dxs = new TList();   dxs->Clear();   for(int i = 0; i < m_m->Count ; i++)    {      str = m_m->operator [](i);      m_dx = new TJzxList;      AnsiString xh1 = "";      AnsiString xz1 = "";      len1 = "";      len2 = "";      for(int j = 1 ; j <= str.Length(); j++)       {         if(j <= 4)          {            xz1 += str[j];          }         if(j > 4 && j <= 11 )          {            xh1 += str[j];          }       }                  StrCopy(m_dx->xh,xh1.c_str());     //每回在这个地方m_dx->xh的值都合适      len1 = (AnsiString)m_dx->xh;      m_dx->xh[len1.Length() + 1] = 0x0;          StrCopy(m_dx->xz,xz1.c_str());    //完成这条语句后 m_dx->xh变成了  m_dx->xh + m_dx->xz的值                                        //而m_dx->xh + m_dx->xz的字符数位15位,我申请的xh才有7位      len2 = (AnsiString)m_dx->xz;      m_dx->xz[len2.Length() + 1] = 0x0;      dxs->Add(m_dx);    }

请问这个为什么呢,我没有什么地方再赋值了,为什么变成两个字符串相加了呢?

[解决办法]
建议用strncpy复制字符串,并且在复制完以后手工在末尾补0

热点排行