为什么C没有snwprintf函数?

前端之家收集整理的这篇文章主要介绍了为什么C没有snwprintf函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有谁知道为什么C标准库中没有snwprintf函数

我知道swprintf,但是没有一个真正的wchar_t版本的snprintf的相同的语义.据我所知,使用[v] swprintf来实现snwprintf函数没有简单的方法

与snprintf不同,swprintf不返回必要的缓冲区大小;如果提供的缓冲区不足,它将返回-1.这是由于编码错误导致的失败,所以我不能继续重试,逐渐更大的缓冲区希望它最终会成功.

我想我可以将缓冲区的最后一个元素设置为非NUL,调用swprintf,并假设如果该元素是NUL之后发生截断.但是,是否保证工作?如果swprintf失败,该标准不指定缓冲区应该处于什么状态. (相比之下,snprintf描述写入哪些字符,哪些被丢弃)

解决方法

参见Larry Jones here给出的答案.

基本上,在C95中添加了swprintf,而在C99中添加了snprintf,并且由于许多实现已经返回了所需字符的数量(对于snprintf),它似乎是一件有用的事情,那就是标准化的行为.他们并不认为这种行为是足够重要的,通过添加它可以打破与swprintf的兼容性(几年前没有这种行为被添加).

猜你在找的C&C++相关文章