【发布时间】:2010-11-13 16:29:27
【问题描述】:
我正在使用下面的代码
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元素里面吗?
非常感谢您提供任何信息,
【问题讨论】: