我是靠谱客的博主 干净黄豆,最近开发中收集的这篇文章主要介绍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()的*修饰符所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部