尊贵的snprintf()
功能...
int snprintf( char *restrict buffer, size_t bufsz, const char *restrict format, ... );
它:
- 返回它打印的字符数,或者更确切地说,如果没有缓冲区大小限制,它会打印的数字。
- 以字符/字节为单位获取缓冲区的大小。
缓冲区大小如何有意义size_t
,但返回类型只是一个int
?
如果snprintf()
应该能够将多个INT_MAX
字符打印到缓冲区中,那么它肯定必须返回一个ssize_t
或一个size_t
并(size_t) - 1
指示错误,对吧?
如果它不应该打印多个INT_MAX
字符,为什么是bufsz
asize_t
而不是,比如说, anunsigned
或 an int
?或者 - 至少官方限制持有不大于 的值INT_MAX
?