![snprintf 输出为 NULL 且大小为 0 安全吗?](https://linux22.com/image/209294/snprintf%20%E8%BE%93%E5%87%BA%E4%B8%BA%20NULL%20%E4%B8%94%E5%A4%A7%E5%B0%8F%E4%B8%BA%200%20%E5%AE%89%E5%85%A8%E5%90%97%EF%BC%9F.png)
打电话安全吗snprintf(NULL, 0, "…", …)
?我还可以用其他方式问:snprintf
如果大小为0,是否写入NUL字符?
中的例子Linux 手册页手册页 printf(3) 提供了一个执行此操作的示例,但在文本的其余部分或在POSIX 程序员手册,我找不到任何相关信息。
答案1
POSIX 程序员手册明确指出:
snprintf() 函数应与 sprintf() 等效,但添加了 n 参数,该参数表示 s 引用的缓冲区的大小。 如果 n 为零,则不写入任何内容,并且 s 可以是空指针。否则,超出第 n-1 个的输出字节将被丢弃,而不是写入数组,并在实际写入数组的字节末尾写入一个空字节。
(强调我的)
执行此调用应该是完全安全的。