我没有OS X开发环境。我没有OS X头文件。我不得不猜测我的一些图书馆电话。此时,我想要使用的其中一件事是strlcpy()
。
OS X上的strlcpy()
是libc的一部分吗?
如果是这样,声明是什么,或者网页上的哪个是头文件的副本?
如果没有,它是OS X上系统库的一部分吗?
如果没有,OS X上是否还有另一个“安全”strcpy()
?
答案 0 :(得分:1)
运行macOS High Sierra 10.13.3的Mac上man strlcpy
的摘录。
STRLCPY(3) - BSD库函数手册 - STRLCPY(3)
NAME
strlcpy,strlcat - 大小有界的字符串复制和连接
LIBRARY
标准C库(libc,-lc)
概要
#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);
说明
strlcpy()和strlcat()函数使用相同的输入参数复制和连接字符串,并输出结果为snprintf(3)。它们被设计为更容易被误用的函数strncpy(3)和strncat(3)更安全,更一致,更容易出错。
strlcpy()和strlcat()获取目标缓冲区的完整大小,如果有空间则保证NUL终止。请注意,NUL的空间应包含在dstsize中。
strlcpy()复制到dstsize - 从字符串src到dst的1个字符,NUL-终止 结果如果dstsize不是0。
strlcat()将字符串src追加到dst的末尾。它最多会追加dstsize - strlen(dst) - 1个字符。然后它将NUL终止,除非dstsize是0或原始的dst字符串 比dstsize更长(实际上这不应该发生,因为这意味着要么dstsize是 不正确或者dst不是正确的字符串。)
如果src和dst字符串重叠,则行为未定义。