用于sprintf() 的格式串已知且相对简单时, 你有时可以预测出缓冲区的大 小。如果格式串中包含一个或两个%s, 你可以数出固定字符的个数再加上对插入 的字符串的strlen() 调用的返回值。对于整形, %d 输出的字符数不会超过((sizeof(int) * CHAR_BIT + 2) / 3 + 1) /* +1 for ’-’ */ CHAR BIT 在 中定义, 但是这个计算可能有些过于保守了。它计 算的是数字以八进制存储需要的字节数; 十进制的存储可以保证使用同样或更少 的字节数。
|
|