printf()函数
如果有时候不想事先指定字段的宽度,而是希望由程序来指定该值,那么可以在字段宽度部分使用*代替数字来实现。但是必须使用一个参数来告诉函数字段宽度应该是声明。
也就是说,
如果转换说明符是%*d,那么参数列表中一个包括一个*的值和一个d的值。
该技术也可以和浮点值一起使用来指定精度和字段宽度。
例子如下:
#include
<stdio.h>
int
main(
void
)
{
unsigned
width,precision;
int
number=256;
double
weight=242.5;
printf(
"what field width?\n"
);
scanf(
"%d"
,&width);
printf(
"the number is: %*d: \n"
,width,number);
scanf(
"%d %d"
,&width,&precision);
printf(
"weight=%*.*f\n"
,width,precision,weight);
return
0;
}
输出结果为:
scanf()函数
在scanf函数中,*提供截然不同的服务。
当把它放在%和说明符字母之间时,它使函数跳过相应的输入项目。如下例子:
#include
<stdio.h>
int
main(
void
)
{
int
n;
printf(
"please enter three integers: \n"
);
scanf(
"%*d %*d %d"
,&n);
printf(
"the last integer was %d\n"
,n);
return
0;
}
输出结果为:
scanf函数的指令是:跳过两个整数,并把第三个整数复制给n。