C语言通过变量控制输出精度的两种方法

有的时候需要通过用户输入的变量来控制数据的输出宽度,总结了一下,大概有两种办法:

1.直接使用转换说明符 *

我们都知道可以通过%m.n来控制数据的输出范围,这里要求m和n都是字面量

类似地,标准库也提供了通过变量来控制宽度的方法,这时我们就要使用%*.*。当使用*的时候要求通过一个int类型的参数来指定宽度,如果参数是正数则输出右对齐,如果参数是负数则输出内容左对齐,相当于添加了一个-标签。例子如下:

int w1, w2;
float a, b;
scanf("%f%f", &a, &b);
scanf("%d%d", &w1, &w2);
printf("%*.*f", w1, w2, a / b);//此时a/b的显示宽度由w1和w2来控制

2.预先构造一个格式化字符串

通常格式字符串我们都使用一个字符串字面量,这样就没办法把一个变量放到格式说明符中。事实上这个参数要求的类型是const char *,因此我们完全可以预先构造一个字符串,将用户输入的指定宽度的变量格式化到这个字符串里面就好了,同样是上面的功能可以写成:

int w1, w2;
float a, b;
char format[10];
scanf("%f%f", &a, &b);
scanf("%d%d", &w1, &w2);
fprintf(format, "%%%d.%df", w1, w2);
printf(format, a/b);

版权声明:本文为cxm2643199642原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。