【c】printf()中%占位符的选取和使用: %d, %s等

格式占位符速通

格式占位符 %

  • 格式占位符 % 是在 C/C++ 语言中格式输入函数,如 scanf、printf 等函数中使用。
  • 其意义就是起到格式占位的意思,表示在该位置有输入或者输出。

规定符

  • %d 十进制有符号整数
  • %u 十进制无符号整数
  • %f 浮点数 (默认6位小数输出)
  • %s 字符串
  • %c 单个字符
  • %p 指针的值
  • %e 指数形式的浮点数
  • %x, %X 无符号以十六进制表示的整数
  • %o 无符号以八进制表示的整数
  • %g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出
  • %p 输出地址符
  • %lu 32位无符号整数
  • %llu 64位无符号整数
  • %% 输出百分号字符本身。

一些混用注意

  • printf() 的 double 和 float:
    • 可以混用 %f 占位符
    • double 可以额外用 %lf。
  • scanf() 的 double 和 float:
    • double 必须用 %lf,float 必须用 %f
    • 不能混用。
  • printf() 的 int 和 unsigned int:
    • 可以混用 %d(或%i)和 %u(或%ui)
    • 但建议 int 用 %d(或%i),unsigned int 用 %u(或%ui)
  • 其它类型同理<如%ul等>

除了格式化说明符之外的一些选项控制

除了格式化说明符之外,printf() 函数还支持一些标志和选项,用于控制输出的精度、宽度、填充字符和对齐方式等。例如:

  • %-10s:左对齐并占用宽度为 10 的字符串;
  • %5.2f:右对齐并占用宽度为 5,保留两位小数的浮点数;
  • %#x:输出带有 0x 前缀的十六进制数。

printf()函数

printf()格式

  • printf() 函数的声明:
    • int printf(const char *format, ...)
  • printf() 函数的调用格式为:
    • printf("<格式化字符串>", <参量表>);
  • format 标签属性是 %[flags][width][.precision][length]specifier
    • 完整格式:< % + 格式 + 宽度 + . + 精度 + 长度类型 + 字母>
      • 注意:宽度是总的占位长度,含精度指定的小数位。
      • 宽度不够补空格。小数位不够,补0
    • 最常见格式:% + specifier
      • 中间省略用默认格式
    • flags:特殊显示格式
      • 左对齐(-), 显示正数+(+), 左边补空格或0, 显示不同进制符号或小数点(#)
    • width:指定宽度,常用数字
      • width的数字:表示要输出的字符的最小数目。
      • 如果输出的值短于该数,结果会用空格填充。
      • 如果输出的值长于该数,结果不会被截断。
      • 注意:如有小数点,小数点占一个位数
      • *:不太常用
    • 小数点,及之后的参数
      • 小数点通常和precision放在一起:.precision
    • .precision:指定精度,常用数字
      • 未指定时,默认为 1。如指定时不带有一个显式值,则假定为 0。
      • 整数(d、i、o、u、x、X):precision 指定了要写入的数字的最小位数。
      • e、E 和 f 说明符:要在小数点后输出的小数位数。
      • g 和 G 说明符:要输出的最大有效位数。
      • s: 要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符。
      • c 类型:没有任何影响。
    • length:指定长度类型
      • 常用:h,l,L

示例

  • %m.nf: 指以小数形式输出(输入)浮点型数据,宽度为m,且保留小数点后n位

format属性值详解





参考链接

END

posted @ 2024-09-06 10:40  anliux  阅读(670)  评论(0编辑  收藏  举报