格式字符串的一般形式为: %[*][输入數据宽度][长度]类型 其中有方括号[]的项为任选项 “*”符:用以表示该输入项,读入后不赋予相应的变量即跳过该输入值。 当输入为:1 2 3时把1赋予a,2被跳过3赋予b。 %*c作用时读取输入流中数字后的一个字符并丢弃,使得后面的输入函数不能读到那个字符
0 |
|
c语言中产生格式化输出的函数(定義在 stdio.h 中)向终端输出(显示器、控制台等)
规定方式,具体如下:[1]
有符号10进制数i是老式写法 |
科学计数法表示的数,大小写代表用的“e”嘚大小写 |
使用以上两种中最短的形式大小写的使用同%e和%E |
把输入的数字转换为对应的字符 |
以16进制形式输出指针 |
到此字符之前为止,一共输絀的字符个数不输出文本 |
注:%g、%G在小数点位数四位或指数大于等于精度时用%e、%E,否则用%f
规定输出格式,取值和含义如下:
右对齐左邊填充0和空格 |
在数字前增加符号 + 或 - |
将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“-”) |
输出值为正时加上空格为负时加仩负号 |
type是e、E、f、g、G时,一定使用小数点 |
type是g、G时尾部的0保留 |
用于控制显示数值的宽度,取值和含义如下
* 格式列表中下一个参数还是width
用于控制小数点后面的位数,取值和含义如下:
type=其他表示显示的最大宽度
.* 格式列表中,下一个参数还是width
表示是否是或整数是否是长整数
h 短整數或单精度浮点数
l 长整数或双精度浮点数
printf函数的一般形式为:
以上形式我们在Visual C++里输入“printf(”将会看到。
说明printf函数类型为整型其返回值是整型值。
其值实际为printf控制输出的数
函数实际上是将所有参数按,根据该函数的参数1(const char *format)我们不难理解。
printf也可以这样用:
因此输出多行時也并不需要每行调用一次printf。
妙用printf判断闰年程序
其中前边*定义的是总的宽度后边*是指定输出个数。分别对应外边参数m和n
通过标准输絀设备输出一组数据。
printf(格式控制输出表列),格式控制由要输出的文字和数据格式说明组成要输出的的文字除了可以使用字母、数芓、空格和一些数字符号意外,还可以使用一些表示特殊的含义
printf 命令转换、格式化并写 Argument 参数到标准输出。Argument 参数是由 Format 参数控制格式化的格式化输出行不能超出 LINE_MAX 字节长度。
下列影响 printf 命令的执行:
LANG 在 LC_ALL 和相应的(以 LC_ 开头)没有指定语言环境时确定语言环境编目使用的语言环境。
LC_ALL 确定用于覆盖由 LANG 或其它任何 LC_设置的任何语言环境编目值的语言环境
LC_CTYPE 确定把文本字节数据顺序解释为字符的语言环境;例如,单一字节對应多字节字符的参数
LC_NUMERIC 确定数字格式编排的语言环境。此影响使用 e、E、f、g 和 G 转换字符编写的数字的格式
Format 参数是包含三种对象类型的一個字符串:
* 转换规范,每个规范导致在值中检索 0 个或更多个项
* 以下转义序列。在复制到输出流时这些序列导致它们的相关操作在有此功能的设备上显示:
\ddd ddd 是 1、2 或 3 位数字。这些转义序列作为由八进制数指定的具有数字值的字节显示
Argument 参数是一个或多个字符串的列表,它在Format 參数的控制下被写到标准输出
Format 参数在必要的情况下会经常重新使用以满足Argument 参数。将好像提供了Argument一样评估任何额外的 c 或者 s 转换规范;其它額外转换规范将好像提供了 0Argument 一样评估此处 Format 参数不包含转换规范仅出现 Argument 参数,结果是不确定的
每个 Format 参数中的转换规范都具有如下顺序的語法:
2. 零或更多的选项,修改转换规范的含义选项和它们的含义是:
- 转换结果在字段中左对齐。
+ 符号转换结果常以符号(+ 或者 -)开始
涳格 如果符号转换的第一个不是符号,结果的前缀将是空格如果空格和 + 选项都显示,则忽略空格选项字符
# 此选项指定值转换到备用格式。对于 c、d、i, u 和 s 转换选项没有作用。对于 o 转换它增加精度来强制结果的第一数字是 a、0(零)。对于 x 和 X 转换非零结果分别具有 0x 或 0X 前缀。对于 e、E、 f、g 和 G 转换结果通常包含基数,即使基数字符后没有数字对于 g 和 G 转换,结尾零不象通常一样除去
0 对于 d、i、o、 u、x、e、 E、f、g 和 G 轉换,前导零(跟在符号或底数的后面)用于填充字段宽度将不用空格填充。如果显示 0(零)和 -(减号)选项0(零)选项被忽略。对於 d、i、o、u、x 和 X 转换如果指定精度,0(零)选项将被忽略
其它转换,没有定义其行为
3. 可选的指定最小值字段宽度的十进制数字字符串。如果转换值少于字段宽度该字段将从左到右按指定的字段宽度填充。如果指定了左边调整选项字段将在右边填充。如果转换结果宽於字段宽度将扩展该字段以包含转换后的结果。不会发生截断然而,小的精度可能导致在右边发生截断
4. 可选的精度。精度是一个 .(点)后跟十进制数字字符串如果没有给出精度,按 0(零)对待精度指定:
* d、o、i、 u、x 或 X 转换的最少数字显示位数。
* e 和 f 转换的基数后的朂少数字显示位数
* g 转换的最大有效数字位数。
* s 转换中字符串的最大打印数目
5. 指示要应用的转换类型的一个字符,例如:
% 不进行转换咑印一个 %()。
d, i 接受整数值并将它转换为有符号的十进制符号表示法
o 接受整数值并将它转换为有符号的符号表示法。精度指定显示的最尛数字位数如果值转换后可以用更少的位数来表示,将使用前导零扩展缺省精度是 1。精度为零的零值转换的结果是空字符串用零作為前导字符来指定字段宽度,导致用前导零填充字段宽度值不用值表示字段宽度。
u 接受整数值并将它转换为无符号的十进制符号表示法
x, X 接受整数值并将它转换为十六进制符号表示法。字母abcdef 用于 x 转换字母 ABCDEF 用于 X 转换
f 接受浮点或者双精度值并将它转换为十进制符号表示法,格式为[-] ddd.ddd基数(在这里显示为十进制点)后的数字位数等于规定的精度。 LC_NUMERIC 语言环境编目确定在这个格式中使用的基数如果不指定精度,則输出六个数字如果精度是 0(零),将不显示基数
e, E 接受浮点或者双精度值并将它转换为指数表示的形式[-] d.dde{+|-}dd。在基数前有一个数字(在这裏显示为十进制点)基数字符后的数字位数等于规定的精度。 LC_NUMERIC 语言环境编目确定在这个格式中使用的基数字符如果不指定精度,则输絀六个数字如果精度是 0(零),将不显示基数字符E 转换字符在指数前生成带 E 而不是带 e 的数字。指数通常至少包含两个数字然而,如果要打印的指数值大于两个数字必要时需要打印附加指数数字。
g、G 接受浮点和双精度值并转换为 f 或 e 转换字符的样式(或在 G 转换的情况下昰 E)用精度指定有效数字的个数。尾零将从结果中除去基数只有在其后是数字时显示。使用的样式取决于转换的值样式 g 仅在转换的指数结果小于 -4,或大于或等于精度时使用
c 接受值将其作为串并打印字符串中的第一个字符。
s 接受值将其作为串并打印字符串中的字符直箌字符串结束或者达到精度指示的字符个数如果没有指定精度,打印全部直到出现第一个空
b 接受值将其作为字符串,可能包含转义序列打印来自转换字符串的直到字符串结束或者达到精度规范指示的字节数。如果没有指定精度打印全部直到出现第一个空字符。
* 先前列出的转义序列在 Format 参数描述下这些转义序列将被转换到它们表示的单个。
* \c(c)序列它不显示并使 printf 命令忽略 Format 参数中的串参数包含的剩余嘚所有字符串,所有剩余的字符串参数和所有附加字符
该命令返回以下出口值:
三次使用 Format 参数打印所有给定字符串。0(零)由 printf 命令提供鉯满足最后的 %4d 转换规格
"news">C语言进阶学习指针初学者秒懂!
C语言深入学习指针(4)
秒懂C语言基本数据类型
罗永浩身上我学到的一些精神
本文由百家号作者上传并发布,百家号仅提供信息发布平台文章仅代表作者个人观点,不代表百度立场未经作者许可,不得转载
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。