在C语言的输入输出流中,有时会出现 "%*d" 等的用法,上网搜了一下,总结如下:
输入时 "%*d" 等表示“虚度 ”,即不读,例如:
double v1,v2;
scanf(" %lf %*d %lf %*d",&v1,&v2);
执行时必须有是个输入,如
11 22 33 44
但事实上只有第一个和第三个是有效输入,则v1=11 v2=33 输入域22和44被跳过了。
输出时 "%*d" 中的 "*" 表示占位符 ,例如:
float f = 3.14159;
printf( "%*.*f", 10, 2, f);
输出时按出现顺序用10和2分别替换两个*,它等同于:printf("%10.2f", f);
又如
printf( "%*d" , 2,1);
则结果是 “ 1“ ,注意,数字1前面有一位空格,因为指定的输出格式是2位的。
最后注意 的格式是
printf("%#o",a);
中,#o表示以八进制数表示a(为0ZZ的形式);同样, #x表示以十六进制数表示(为0xZZ或0XZZ)。