我正在使用下面的代码
char call[64] = {'\0'} /* clean buffer */
strncpy(call, info.called, sizeof(call));
我总是使用 sizeof 作为目标来保护溢出,以防源大于目标。这样我可以防止缓冲区溢出,因为它只会复制目的地可以处理的尽可能多的内容。
但我现在想知道它是否会终止目的地。
几个案例。
1) 如果源更大。我可以这样做:
call[strlen(call) - 1] = '\0'; /* insert a null at the last element.*/
2)如果源小于目标。call 是 64 个字节,我复制了 50 个字节,因为这是源的大小。它会自动将 null 放在 51 元素中吗?
非常感谢您提供的任何信息,