我没有 OS X 开发环境。我没有 OS X 头文件。我不得不猜测我的一些图书馆电话。此时,我想使用的东西之一是 strlcpy()
。
strlcpy()
是 OS X 上 libc 的一部分吗?如果是,声明是什么,或者网络上哪里有头文件的副本?
如果不是,它是 OS X 上系统库的一部分吗?
如果没有,OS X 上是否还有另一个“安全”的
strcpy()
可用?
最佳答案
摘自运行 macOS High Sierra 10.13.3 的 Mac 上的 man strlcpy
。
STRLCPY(3) — BSD Library Functions Manual — STRLCPY(3)
NAME
strlcpy, strlcat -- size-bounded string copying and concatenation
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <string.h> size_t strlcpy(char * restrict dst, const char * restrict src, size_t dstsize); size_t strlcat(char * restrict dst, const char * restrict src, size_t dstsize);
DESCRIPTION
The strlcpy() and strlcat() functions copy and concatenate strings with the same input parameters and output result as snprintf(3). They are designed to be safer, more consistent, and less error prone replacements for the easily misused functions strncpy(3) and strncat(3).
strlcpy() and strlcat() take the full size of the destination buffer and guarantee NUL-termination if there is room. Note that room for the NUL should be included in dstsize.
strlcpy() copies up to dstsize - 1 characters from the string src to dst, NUL-terminating the result if dstsize is not 0.
strlcat() appends string src to the end of dst. It will append at most dstsize - strlen(dst) - 1 characters. It will then NUL-terminate, unless dstsize is 0 or the original dst string was longer than dstsize (in practice this should not happen as it means that either dstsize is incorrect or that dst is not a proper string).
If the src and dst strings overlap, the behavior is undefined.
关于c - 我应该在 Mac OS X 上使用哪个 libc strcpy/strlcpy/strncpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49023864/