查看“C 输出转换语法”的源代码
←
C 输出转换语法
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
本节提供了关于printf模板字符串中可能出现的精确转换规范的详细信息。 <br> 模板字符串中的非转换规范字符会原样打印到输出流。模板字符串中允许多字节字符序列(参见字符集处理)。 <br> printf模板字符串中的转换规范具有一般形式: <pre>% [ param-no $] flags width [ . precision ] type conversion</pre> 或 % [ param-no $] flags width . * [ param-no $] type conversion 例如,在转换说明符‘%-10.8ld’中,“-”是一个标志,“10”指定了字段宽度,精度是“8”,字母“l”是一个类型修饰符,而“d”指定了转换样式。(这个特定的类型说明符表示以十进制表示法打印一个长整型参数,至少需要8位数字左对齐在一个至少10个字符宽的字段中。) <br> 更详细地说,输出转换规范由以下部分组成: <ul> <li><p>一个可选的用于此格式的参数规范。通常,printf函数的参数分配给格式字符串中出现的顺序。但在一些情况下(如消息翻译),这不是可取的,并且此扩展允许显式指定参数。</p> <p>格式的param-no部分必须是1到传递给函数调用的最大参数数量之间的整数。某些实现将此数字限制为某个上限。可以通过以下常量检索确切的限制。</p> <blockquote><p>宏:NL_ARGMAX</p> <p>NL_ARGMAX的值是printf调用中特定位置参数规范允许的最大值。运行时实际有效的值可以通过使用sysconf并使用_SC_NL_ARGMAX参数检索。请参阅sysconf的定义。</p></blockquote> <p>某些系统有非常低的限制。GNU C库没有真正的限制。</p> <p>如果格式的任何位置都有参数规范,则格式字符串中的所有位置都必须有一个。否则,行为是未定义的。</p></li> <li><p>零个或多个修改转换规范正常行为的标记字符。</p></li> <li><p>一个可选的十进制整数,指定最小字段宽度。如果正常转换产生的字符数少于此数,则用空格填充字段以达到指定的宽度。这是一个最小值;如果正常转换产生的字符数多于此数,则不截断字段。通常,输出在字段内右对齐。</p> <p>您还可以指定字段宽度为“*”。这意味着下一个参数列表(在要打印的实际值之前)将被用作字段宽度。值必须是一个int。如果值为负数,这意味着设置“-”标志(见下文),并使用绝对值作为字段宽度。</p></li> <li><p>一个可选的精度来指定数值转换的位数。如果指定了精度,它由一个句点(“.”)可选地后跟一个十进制整数组成(如果省略,则默认为零)。</p> <p>您还可以指定精度为“''”。这意味着下一个参数列表(在要打印的实际值之前)将被用作精度。值必须是一个int,如果值为负数,则忽略该值。如果为字段宽度和精度都指定了“''”,则字段宽度参数位于精度参数之前。其他C库版本可能无法识别此语法。</p></li> <li><p>一个可选的类型修饰符字符,用于指定与默认类型不同的相应参数的数据类型。(例如,整数转换假设类型为int,但您可以指定“h”、“l”或“L”以表示其他整数类型。)</p></li> <li><p>一个字符,指定要应用的转换。</p></li></ul> <br> 使用“-Wformat”选项,GNU C编译器检查对printf和相关函数的调用。它检查格式字符串并验证是否正确提供了正确数量和类型的参数。此外,GNU C语法告诉编译器您编写的函数使用printf风格的格式字符串。 <br>
返回至“
C 输出转换语法
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息