【发布时间】:2020-11-03 04:35:12
【问题描述】:
我有两个 unsigned char* 并尝试两个连接。这是代码示例。
unsigned char* finaleResult = (unsigned char*)malloc(size);
memcpy(finaleResult, part1, sizeof(part1));
memcpy(finaleResult+sizeof(part1), part2, sizeof(part2));
finaleResult[sizeof(part1) + sizeof(part2)+1] = '\0';
std::cout << "finaleResult: " << finaleResult << std::endl;
我假设在 finaleResult 中看到两个 part1 + part2,但只有 part1。 我的代码有什么问题?
【问题讨论】:
-
我们看不到
part、part1和part2是如何定义的。请出示minimal reproducible example。 -
请发布更多代码,包括您定义和填充
part1, part2的位置。我怀疑你可能想要strlen而不是sizeof。 -
请注意,如果
part1是unsigned char *,sizeof(part1)会给你指针的大小,而不是字符串的大小。如果你想要字符串的长度,使用strlen -
@NateEldredge
strlen想要一个char*参数,而不是unsigned char*。 C 风格的字符串是纯char的数组。如果您想使用以 nul 结尾的unsigned char数组,您可以这样做,但标准库不一定有太大帮助。