我现在有以下的 C 代码
int length = 50
char *target_str = (char*) malloc(length);
char *source_str = read_string_from_somewhere() // read a string from somewhere
// with length, say 20
memcpy(target_str, source_str, length);
情景是
target_str
被初始化为50个字节。source_str
是长度为20的字符串。如果我想将
source_str
复制到target_str
,我会使用上面所述的长度为50的memcpy(),这是target_str
的大小。我在memcpy中使用length
的原因是,source_str
的最大值可以是length
,但通常小于该值(在上面的示例中为20)。现在,如果我想根据其终止字符(
'\0'
)复制source_str
的长度,即使memcpy长度超过终止字符的索引,上面的代码是否正确?还是有其他建议?谢谢任何帮助。
strlen(source_str)
,然后您可以分配确切的大小呢?此外,您不需要强制转换malloc
的结果。 - ggorlen