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