来自 cplusplus.com 关于 memcpy
函数的描述:"此函数不会检查源字符串是否有终止的 null 字符 - 它总是精确地复制 num 个字节。"
那么以下代码应该会导致运行时错误,对吗?
char str1[20] = "";
char str2[20] = "Another Text---";
memcpy(str1, str2, strlen(str2));
printf("%s\n%s", str1, str2);
但是,我总是在我的gcc编译器中得到正确的输出。这是否意味着memcpy实际上从
str2
的末尾复制了空字符,还是只是一个随机情况?编辑:我使用
str1 [20] =“A”
获得相同的行为,因为一些答案指出str1 [20] =“”
会用所有NULL字符初始化字符串。