一、scanf
在scanf裡用*修飾符,是起到過濾讀入的作用。比如一個有三列數值的資料,我隻想得到第2列數值,可以在循環裡用scanf(“%*d%d%*d”,a[i])來讀入第i行的第2個數值到a[i]。
例如:
#include<cstdio>
int main()
{
int a = 1, b = 1;
// 從鍵盤中輸入2 2
scanf("%d%*d", &a, &b);
printf("%d %d\n", a, b);
// 從鍵盤中輸入 2 n 2 或者 2n2都可以
a = 1, b = 1;
scanf("%d%*c%d", &a, &b);
printf("%d %d\n", a, b);
a = 1, b = 1;
// 從鍵盤中輸入 2 qwe 2
scanf("%d%*s%d", &a, &b);
printf("%d %d", a, b);
return 0;
}
二、printf
在printf裡用**修飾符的含義完全不同。如果寫成printf(“%6d”, 123),很多同學應該就不會陌生了,這是設定域寬的意思。同理,%6s也是域寬。* 修飾符正是用來更靈活的控制域寬。使用%*s,表示這裡的具體域寬值由後面的實參決定,如printf(“%*s”,6, “abc”)就是把”abc”放到在域寬為6的空間中右對齊。
int main()
{
char s[] = "abc";
printf("%*s\n", 6, s);
}