目的是读取到数据后送给数组再对数组处理

    char *a[50000];
 char *b[50000];


 while( !recset.IsEOF() )
  {
   // Read the result line
   recset.GetFieldValue("time",sItem1);
   recset.GetFieldValue("source",sItem2);
   recset.GetFieldValue("Target",sItem3);            ////////////////
   //数据传送到数组
            ////////////////////////////////   a[i1]=sItem2.GetBuffer(sItem2.GetLength() + 1);
            sItem2.ReleaseBuffer();
   b[i1]=sItem3.GetBuffer(sItem3.GetLength() + 1);
            sItem2.ReleaseBuffer();
    i1++;
 // Skip to the next resultline
   recset.MoveNext();
  }  // Close the database
  database.Close();
 }      CATCH(CDBException, e)
 {
  // A database exception occured. Pop out the details...
  AfxMessageBox("Database error: "+e->m_strError);
 }
 END_CATCH; 
   printf("%s\n",a[i1]);
   printf("%s\n",b[i1]);
1.为什么数据没有显示出来呢?2.但如果把printf("%s\n",a[i1]);printf("%s\n",b[i1]);放到a[i1]=sItem2.GetBuffer(sItem2.GetLength() + 1);sItem2.ReleaseBuffer();b[i1]=sItem3.GetBuffer(sItem3.GetLength() + 1);sItem2.ReleaseBuffer();的后面就可以显示啊,这又是问什么呢?
怎样我才能出现1.中我想要的结果呢?
请高手回答。。
谢谢!!!