vsnprintf 能否返回大于 1 的负值?

标签 c c-libraries

vsnprintf() 能否返回一个大于 1 的负值?如果是,它是在什么情况下这样做的?

我尝试使用 %ls 作为 char 数组的格式说明符,还尝试复制大于分配的数组。在这两种情况下,我都得到 -1 作为返回值。

最佳答案

是的,它可以,就像“允许”一样。具体情况取决于您的平台,没有任何规定或规定。唯一可移植的返回值是检查它的 < 0查看是否有错误。

来自标准 (7.21.6.12 (3), vsnprintf ):

the null-terminated output has been completely written if and only if the returned value is nonnegative and less than n.

当然,任何给定的平台都可以对返回值做出额外的保证;请查阅您的文档。

关于vsnprintf 能否返回大于 1 的负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9091960/

相关文章:

c - 如何修复按引用传递未正确更改值

c - 指针的运行时类型检查

c - C中是否有一个函数可以检查一个字符是字符还是整数等?

c - 使用 fscanf 读取数据

无法从中找到是否是回文

c - 如何将十六进制值放入 24 位结构中

c - x86_64 ASM - 指令的最大字节数?

c - 结构指针设置值

python - 如何使用 C 库刷新 Python 程序中的内存?