2016-06-08 221 views
0

我只是C语言的初学者。我用C语言编写了一个代码,其中包含许多memcpy函数。我想将memcpy语句转换为memcpy_s ..我不完全掌握语法。如何将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)

+0

这是C还是C++?在后者中可能有其他技术。 – Bathsheba

+0

这是C编程 – cids

+0

什么是'trace_buf'和'EventName'?你的'memcpy_s'版本有什么问题?是否存在编译错误消息,崩溃或错误行为?你没有清楚地解释实际问题。 – user694733

回答

2

的代码可能是:

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

虽然也许你会想用len+1,如果你想复制一个空结束的字符串。 (但在这种情况下,请使用strcpy_s)。

此外,您应该允许错误情况:如果memcpy失败(缓冲区将被清空),请设计其余代码以正确运行,或者检查返回值并在失败时执行操作。

相关问题