【发布时间】:2019-04-29 02:03:53
【问题描述】:
我有一个结构数组,我需要将 CString 转换为 char 数组。此转换针对 1000 个数据点进行,并将输出写入新数组。所以我的问题是:我有一个 for 循环遍历 CStrings 数组并将它们转换为 char 数组并将其写入我的“新”数组。问题是每次迭代都会将新转换的char 数组写入所有先前的数组元素。例如newArr[0] = oldArr[0] = 工作。 newArr[1] = oldArr[1] 但现在 newArr[0] 也 = oldArr[1]。然后是newArr[2] = oldArr[2],但又是newArr[0]、newArr[1] 和newArr[2] = oldArr[2]。
我的代码如下:
for (size_t i = 0; i < MAX_TAGS; i++)
{
char nodeStr[40];
strcpy_s(nodeStr, (strlen(theConf.confP[i].nodeID) + 1), theConf.confP[i].nodeID);
monitoredNodes[i] = UA_NODEID_STRING(theConf.confP[i].namespaceIndex, nodeStr);
}
我想我在这里做错了,但我尝试了各种方法,包括查看编译器优化,但每次都是同样的问题,尽管我按索引设置了一个数组项,但所有以前的数组项似乎也都被写入了.
【问题讨论】:
-
这不是strcpy_s的正确使用方式,第二个参数应该是目标(nodeStr)的大小。
-
UA_NODEID_STRING是做什么的?