strncpy()
据说可以防止缓冲区溢出。但是,如果它在没有空终止的情况下防止溢出,那么后续的字符串操作很可能会溢出。因此,为了防止这种情况,我发现自己在做:
strncpy( dest, src, LEN );
dest[LEN - 1] = '\0';
man strncpy
给出:
功能类似,只是复制的字节数
strncpy()
不超过。因此,如果 的第一个字节中没有空字节,则结果将不会以空值结尾。n
src
n
src
没有 null 终止看似无辜的事情,例如:
printf( "FOO: %s\n", dest );
...可能会崩溃。
是否有更好、更安全的替代方案strncpy()
?