首页 > 解决方案 > 将 char* 复制到 char

问题描述

我想将变量类型 char* 复制到变量类型 char 中。调试时,我发生了一个错误:使用命令 strcpy."发生异常"。

如何更改 strcpy 的声明?请有任何建议。

typedef struct 
{
  int loadId; ///< ID de la charge
  long version; ///< Version de l'objet
  char loadCustomerId[CL_DSP_ID_LOCATION+1];
}DSP_Load;

DSP_Load donneesLoad;
char *loadCustomerID = (char*)json_string_value(obj);
strcpy(donneesLoad.loadCustomerId, loadCustomerID);

标签: cdebugging

解决方案


strcpy函数仅在源字符串中遇到空字符时停止复制。这意味着如果源字符串大于目标数组,您将发生缓冲区溢出并调用未定义行为。

更安全的版本是strncpy. 如果使用了所有位置,它可能不会终止目标字符串。在这里你可以这样做:

strncpy(donneesLoad.loadCustomerId, loadCustomerID, CL_DSP_ID_LOCATION); // prevent buffer overflow
donneesLoad.loadCustomerId[CL_DSP_ID_LOCATION] = '\0';                   // ensure a terminating null

推荐阅读