在printf函数中,我们可以用数字修饰来控制打印的字段宽度和精度,如下(为强调视觉效果,均填充0):

#include <stdio.h>
int main()
{
    int i=1;
    float f=2.4;
    printf("%04dn",i);
    printf("%06.2f",f);
    return 0;
}

运行如下:

0001
002.40

我们用*修饰也可以达到这样的效果,如下:

#include <stdio.h>
int main()
{
    int i=1;
    float f=2.4;
    printf("%0*dn",4,i);
    printf("%0*.*f",6,2,f);
    return 0;
}

运行后与上面一致。简单来说,*修饰符通过按顺序读取printf函数中的参数,等效替换成数字后控制打印。

如此,我们就可以声明一个变量,运行时让用户赋值,通过*修饰符让变量控制打印,交互感更强,如下:

#include <stdio.h>
int main()
{
    float f=2.4;
    int width,precision;
    printf("请输入打印字段宽度与精度:");
    scanf("%d%d",&width,&precision);
    printf("%0*.*f",width,precision,f);
    return 0;
}

运行时就可以自定义打印宽度与精度:

请输入打印字段宽度与精度:8 4
002.4000

 注意:*可以接受的参数尽量为无符号整型,与数字修饰时保持一致,如其他类型,可能会发生转换,也可能发生错误。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/juzer/p/12373165.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!