C/C++格式化输入与输出(位宽,左右对齐,%d,%f等)总结

C语言的格式化输入与输出

输入

  • scanf()格式字符:

    • %c,输入一个字符(包括空白字符)
    • %s,输入字符串(碰到空白字符停止)
    • %d,输入十进制int型数
    • %f、%e,输入float型数
    • %u,输入无符号int型数
  • scanf()格式修饰符

    • m:输入数据的位宽

      ​ eg:%*(m)d 代表跳过m个字符; %(m) 代表自宽,即读取x个字符

      #include<stdio.h>
      int main()
      {
      	int a,b;
      	scanf("%*c%2d%*2d%3d",&a,&b);	//%*C表示忽略一个字符 
      	printf("a=%d,b=%dn",a,b);
      	return 0;
      }
      

      在这里插入图片描述

    • l:%ld,%lu,表示输入long型;%lf,%le,表示输入double型

    • L:%Lf,%Le,表示输入long double型

    • h:%hd,表示输入short型

    • ll,%lld,表示输入long long型

输出

  • %d,%ld,%lld,%hd分表表示输出int,long,long long,short型

  • %u,%lu,%llu,%hu分表表示输出无符号int,long,long long,short型

  • %o,表示以八进制无符号整型输出,在百分号前加#可输出前缀

  • %0x,表示以十六进制无符号整型输出,在百分号前加#可输出前缀

  • %f,表示以小数形式(6位小数)输出float,double型

  • %e,表示以标准指数形式输出float,double型

    #include<stdio.h>
    int main()
    {
    	float a=1234.144;
    	float b=0.000124414;
    	float c=-23434.1;
    	printf("a=%enb=%enc=%e",a,b,c);
    	return 0;
    }
    

    在这里插入图片描述

控制输出的左右对齐与位宽

  • 输出整数:eg:%12d,即每一位输出的都有12位,且向右对齐,位数不够向前补空格。%-12d,即每一位输出的都有12位,且向左对齐,位数不够向后补空格。

  • 输出小数:eg:%7.2f,其中7指的是最后输出总的占位符为7位,小数点也占一位,右对齐;其中2指的是保留最后的2位小数(遵循四舍五入原则)

    #include<stdio.h>
    int main()
    {
    	int a=123;
    	double b=123.3535;
    	printf("a=%6dna=%-6dn",a,a);
    	printf("b=%12.1fnb=%-12.1f",b,b);
    	return 0;
    }
    

    在这里插入图片描述