【发布时间】:2011-10-19 08:38:12
【问题描述】:
我正在尝试使用 memcpy 将两个字符串相加。我需要,第一个 memcpy 确实包含数据。然而,第二个没有添加。知道为什么吗?
if (strlen(g->db_cmd) < MAX_DB_CMDS )
{
memcpy(&g->db_cmd[strlen(g->db_cmd)],l->db.param_value.val,strlen(l->db.param_value.val));
memcpy(&g->db_cmd[strlen(g->db_cmd)],l->del_const,strlen(l->del_const));
g->cmd_ctr++;
}
【问题讨论】:
-
仅供参考:在 C 中允许将长语句分成多行,甚至可以分成带有额外变量的多个语句以保存中间结果。
-
我注意到一些嵌入式数据库(我认为是 berkeley DB)明确使用数据和长度。数据不需要以空值结尾,并且可能包含空值。在这种情况下,如果您的程序已经从 DB API 获得了长度,请保留它并避免使用 strlen。