来自cplusplus.com关于memcpy
:“该函数不检查源中的任何终止空字符 - 它总是精确复制 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 字符初始化字符串。