如何将memcpy转换为memcpy_s?

时间:2016-06-08 09:38:24

标签: c memory memcpy

我只是C的初学者。我在C中编写了一个带有大量memcpy函数的代码。我想将memcpy语句转换为memcpy_s ..我不太习惯这样做。

这是我的代码段:

signed char buffer[MAX]; 
unsigned char len; 
const char *scenario = ConvertMap[identity]; 
len = strlen(scenario); 
memcpy((void*)&buffer[0],scenario,len);

如何将最后一行转换为memcpy_s?是这样的:

memcpy_s((void*)&buffer[0], sizeof(buffer), scenario, len)

1 个答案:

答案 0 :(得分:3)

代码可以是:

memcpy_s(buffer, sizeof(buffer), scenario, len)

如果您打算复制以空字符结尾的字符串,可能还是要使用len+1。 (但在这种情况下,请使用strcpy_s)。

此外,您应该考虑错误情况:如果memcpy失败(缓冲区将被清空),请设计其余代码以使其正常运行,或者检查返回值并在失败时采取措施。