我需要实现一种在不使用任何标准库的情况下将不同字符连接成 char* 的方法(它是规范的一部分)。所以,没有 strcat 或 strcopy。我也不能使用字符串。
这是我尝试做的(字符存储在我自己实现的 StringList 中,因此是“GetCell”方法和 ->next 指针):
char* IntlFinder::ConcatenateSrc ( int nSource, long beginPosition )
char* res = new char;
Cell* cell = ComList.GetCell(beginPosition);
for (long i = beginPosition; i <= (CountTab[nSource]); i++)
{
if (nSource == 0 || cell->elem.source == nSource)
{
res[i-beginPosition] = cell->elem.caractere;
}
cell = cell->next;
}
*res = '\0';
return res;
}
当我调试时,这看起来很棒,直到我到达某个字符,然后它无缘无故地出错(它当时指向的单元格看起来很正常,地址有效)。
对此有什么想法吗?
--
编辑:我试图这样做:
for (long i = beginPosition; i <= (CountTab[nSource]-1); i++)
{
if (nSource == 0 || cell->elem.source == nSource)
{
*res = cell->elem.caractere;
++res = new char;
}
cell = cell->next;
}
这应该增加指针并分配内存(所以我可以在下一次迭代中添加另一个值),并且我不再有任何 SIGSERV 错误。但是当我返回这个指针或指针的原始值,指向第一个字符时,我什么也得不到(在第一种情况下)或只得到第一个字符(在第二种情况下)。
我没有忘记在末尾添加 '\0' ,但这仍然不能使它成为一个字符串。