为什么strncpy不为null终止?
strncpy()
据说可以防止缓冲区溢出。但是如果它在没有null终止的情况下防止溢出,那么随后的字符串操作将会溢出。所以为了防止这种情况,我发现自己在做:
strncpy( dest, src, LEN );dest[LEN - 1] = '\0';
man strncpy
得到:
strncpy()函数类似,只是复制了不超过n个字节的src。因此,如果src的前n个字节中没有空字节,则结果将不会以空值终止。
没有null终止看似无辜的东西,如:
printf( "FOO: %s\n", dest );
......可能会崩溃
是否有更好,更安全的替代品strncpy()
?
达令说
相关分类