首页 > 其他分享 >【c】printf()中%占位符的选取和使用: %d, %s等

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

时间:2024-09-06 10:35:38浏览次数:3  
标签:输出 小数点 选取 宽度 printf 格式 占位

格式占位符速通

格式占位符 %

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

规定符

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

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

除了格式化说明符之外,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

标签:输出,小数点,选取,宽度,printf,格式,占位
From: https://www.cnblogs.com/anliux/p/18399655

相关文章

  • STM32 VCP串口通信 浮点数printf打印的问题 保姆级教程
    各位,我最近用STM32G474,设计一个电机驱动的电路。其中ADC采样供电电压,结果是个浮点数,想用printf打印出来看看。然而,电脑上都是USB的接口,没有串口,不想接USB转串口的芯片的话,就将STM32的USB直接配置成VCP(virtualCommunicationPort),那么,电脑就直接将USB识别为串口,直接用printf......
  • 日志打印的时候使用占位符而不是用字符串拼接
    日志打印的时候使用占位符而不是用字符串拼接1.logger.info("错误信息:"+e.getMessage());  //字符串拼接2.logger.info("错误信息:{}"+e.getMessage()); //使用占位符(正确使用方式)因为String字符串的拼接会使用StringBuilder的append()方式,有一定的性能损耗。......
  • Java中用于格式化文本消息的工具类MessageFormat.format,使用{x}占位符
    MessageFormat.format 是Java中用于格式化文本消息的工具类。它允许你定义一个模板字符串,并使用一组参数来填充模板中的占位符。这个类是用于处理复杂消息格式的,例如多语言环境下的消息。MessageFormat.format 的使用方式如下:publicstaticStringformat(Stringpattern,......
  • 第八章 【前端】Mock.js(8.3)——数据占位符定义规范 DPD
    8.3数据占位符定义规范DPDMock.Random是一个工具类,用于生成各种随机数据。Mock.Random类中的方法在数据模板中称为『占位符』,书写格式为@占位符(参数[,参数])。占位符的格式为:'属性名':@占位符Mock.Random类中提供的完整方法(占位符)如下:Type(类型)Method(占......
  • 第3章_auto占位符(C++11~C++17)
    第3章auto占位符(C++11~C++17)3.1重新定义的auto关键字在C++11中静态成员变量是可以用auto声明并且初始化的,不过前提是auto必须使用const限定符。staticconstautox=5;遗憾的是,const限定符会导致x常量化,显然这不是我们想要的结果。在C++17标准中,对于静态成员变量,auto可以......
  • 标准IO函数:fprintf和fscanf,fread和fwrite
    1.使用分文件编译,实现注册登录界面,使用fgets,fscanf,fpritnf函数。主函数#include"log.h"intmain(intargc,constchar*argv[]){ intkey; while(1) { printf("**********1.注册**********\n"); printf("**********2.登录**********\n"); printf(&quo......
  • simple sprintf wrapper
    version0#include<memory>#include<string>#include<stdexcept>template<typename...Args>std::stringstring_format(conststd::string&format,Args...args){intsize_s=std::snprintf(nullptr,0,format.c_str(),......
  • stm32 printf 重定向问题
    最终解决方案新建一个stm32_printf.h头文件,在main.c中include#ifndefSTM32_SPIDMA_MODE_STM32_PRINT_H#defineSTM32_SPIDMA_MODE_STM32_PRINT_H#include"stm32f1xx_hal.h"#include"string.h"externUART_HandleTypeDefhuart1;voidprint_f(char*str){......
  • printf("goodbye, Dennis");
    來源:https://archive.vn/5yAOw#selection-931.0-1071.225 Babbage|Obituaryprintf("goodbye,Dennis");DennisRitchie,afatherofmoderncomputing,diedonOctober8th,aged70Oct20th2011ShareByG.F.|SEATTLEDennisRitchie,a......
  • 萌新赛 sprintf漏洞
    首先是个.git源码源码泄露,用githack回复一下源码源码<?php$pass=sprintf("andpass='%s'",addslashes($_GET['pass']));$sql=sprintf("select*fromuserwherename='%s'$pass",addslashes($_GET['name']));?>......