我是靠谱客的博主 干净黄豆,最近开发中收集的这篇文章主要介绍printf()和scanf()的*修饰符printf()的*修饰符scanf()的*修饰符,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
printf()的*修饰符
如果你不想预先指定字段宽度,希望通过程序来指定,那么可以用***修饰符代替字段宽度。但还是要用一个参数告诉函数,字段宽度应该是什么。
也就是说,如果转换说明是%*d**,那么参数列表中应包含***和d对应的值。
这个技巧也可用于浮点值指定精度和字段宽度**。
#include <stdio.h>
int main(void) {
unsigned width, precision;
int number = 256;
double weight = 242.5;
scanf("%d", &width);
printf("#%*d#n", width, number);
scanf("%d %d", &width, &precision);
printf("weight = #%*.*f#n", width, precision, weight);
return 0;
}
变量width提供字段宽度,number是待打印的数字。因为转换说明*在d的前面,所以在printf()的参数列表中,width在number的前面。同样,width和precision提供打印weight的格式化信息。
下面是一个运行示例:
输入:
6
8 3
输出:
#
256#
weight = # 242.500#
这里,用户首先输入6,因此6是程序使用的字段宽度。类似地,接下来用户输入8和3,说明字段宽度是8,小数点后面显示3位数字。一般而言,程序应根据weight的值来决定这些变量的值。
scanf()的*修饰符
scanf()的*的用法与此不同。把*放在%和转换字符之间时,会使得scanf()跳过对应的输出项。
如下所示:
#include <stdio.h>
int main(void) {
int n;
scanf("%*d %*d %d", &n);
printf("%d", n);
return 0;
}
运行结果如下:
输入:
2 3 4
输出:
4
程序清单中的scanf()指示:跳过两个整数,把第3个整数拷贝给n。
最后
以上就是干净黄豆为你收集整理的printf()和scanf()的*修饰符printf()的*修饰符scanf()的*修饰符的全部内容,希望文章能够帮你解决printf()和scanf()的*修饰符printf()的*修饰符scanf()的*修饰符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复