我没有OS X开发环境。我没有OS X头文件。我不得不猜测我的一些图书馆电话。在这一点上,我想使用的一件事是strlcpy()


OS X上strlcpy()是libc的一部分吗?
如果是这样,声明是什么,或者在头文件的网上副本?
如果不是,它是否是OS X上系统库的一部分?
如果没有,OS X上是否还有另一个“安全” strcpy()

最佳答案

运行MacOS High Sierra 10.13.3的Mac上的man strlcpy摘录。


  STRLCPY(3)— BSD库功能手册— STRLCPY(3)
  
  名称
  
  strlcpy,strlcat-大小限制的字符串复制和连接
  
  图书馆
  
  标准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终止。请注意,dstsize中应包含NUL的空间。
  
  strlcpy()最多将dstsize-1个字符从字符串src复制到dst,以NUL结尾
       如果dstsize不为0,则返回结果。
  
  strlcat()将字符串src附加到dst的末尾。它将最多附加dstsize-strlen(dst)
       -1个字符。然后它将以NUL终止,除非dstsize为0或原始dst字符串
       的时间比dstsize长(实际上这不应发生,因为这意味着dstsize是
       错误或dst不是正确的字符串)。
  
  如果src和dst字符串重叠,则行为未定义。

10-07 21:31