问一个char***得问题
我主要是想把一个字符串数组写到NameValue当中,所以把NameValue用
char***作为输出参数,功能函数说明如下:
int GetOutFileEditInfo(XMLTag* pRootTag, const char* TrackName, int NodeInde
x, char*** NameValueArray//关键所在)
{ //下面语句没有问题
XMLTag* pTempTag =
pRootTag->GetEmbeddedTag(1)->GetEmbeddedTagByName(TrackN
ame);
if (!pTempTag)
return 0;
if (NodeIndex > pTempTag->GetNumEmbeddedTags())
return 0;
char* TrackNameWithIndex = new char[strlen(TrackName)+1+sizeof(int)];
char* tempstring = new char[sizeof(int)];
strcpy(TrackNameWithIndex,TrackName);
strcat(TrackNameWithIndex, itoa(NodeIndex, tempstring, 10));
XMLTag* pTempTag1 = pTempTag->GetEmbeddedTagByName(TrackNameWithIndex);
int ArrayLen = pTempTag1->GetNumEmbeddedTags();
XMLTag* pTempTag2 = NULL;
//下面这句出现问题了
*NameValueArray = new char*[ArrayLen*2];
//
for (int EntryIndex = 0; EntryIndex < ArrayLen; EntryIndex++)
{
//pTempTag2Ö¸ÏòÊôÐÔ¶ÓÁеĽڵã
pTempTag2 = pTempTag1->GetEmbeddedTagByName(_PREF, EntryIndex);
if (!pTempTag2)
return 0;
*(NameValueArray[EntryIndex]) =
pTempTag2->GetSynDesEntryValue(_Entry);
*(NameValueArray[EntryIndex+1]) = pTempTag2->GetValue();
}
delete []TrackNameWithIndex;
delete []tempstring;
return ArrayLen;
}
main()函数的主要语句如下:
char* errorbuf = new char[1024];
int buflen = 1024;
XMLTag* pRootTag = ParseSynDesFile("c:\\ad.xml", errorbuf, buflen);
char** fNameValueArray;
int i = GetOutFileEditInfo(pRootTag,_VideoEditInfo, 1,
&fNameValueArray); //这儿调用功能函数
cout<< i<<endl;
为了认证上面的参数调用没有问题我变了下面的测试程序:
void f(char*** aa)
{
*aa = new char*[9];
(*aa)[0] = "asdfasdF";
(*aa)[1] = "asdfasdF";
(*aa)[2] = "asdfasdF";(*aa)[3] = "asdfasdF";
(*aa)[4] = "asdfasdF";(*aa)[5] = "asdfasdF";
(*aa)[6] = "asdfasdF";
(*aa)[7] = "asdfasdF";
(*aa)[8] = "asdfasdF";
}
void main()
{
char** b;
char***c = &b;
f(&b);
cout<<b[0]<<endl<<b[1]<<endl<<b[2]<<endl
<<b[3]<<endl<<b[4]<<endl<<b[5]<<endl<<b[6]<<endl<<b[7]<<endl;
}
测试程序没有问题的!
请大家帮帮忙看看,多谢多谢!
分数慷慨!!