【发布时间】:2011-04-28 00:42:26
【问题描述】:
printf 转换规范是% 后跟标志、宽度、精度、长度修饰符和转换说明符。转换规范的大小是否有实际限制?
即%s 是 2 个字符长,而 %08.2f 是 6 个字符长。我的问题是,根据 C99 标准,可以创建的格式字符串中的最大单个规范的长度是多少?
【问题讨论】:
-
我很好奇——除了好奇,你还有什么想知道的吗?
-
@nategoose:我正在考虑围绕
snprintf使用一个非常特殊的包装器,并想了解我是否可以静态分配一些临时缓冲区 -
看看 GNU 的 libc 实现怎么样?如果你允许尽可能多,你应该足够好。
-
我认为我曾经看过的一个足够简单易读的实现只是解释了转换规范——使用带有几个整数变量的状态机,直到它到达类型。然后数据类型处理代码使用这些整数和输出参数(当然是处理默认状态),因此在整数字符串之外没有任何限制,因为它们太大而无法放入整数。我认为这是 Nut/OS 实现
标签: c printf c99 format-string