我們可能知道scanf里用*修飾符,是起到過濾讀入的作用。比如一個有三列數值的數據,我只想得到第2列數值,可以在循環里用scanf(“%*d%d%*d”, a[i])來讀入第i行的第2個數值到a[i]。
但是* 修飾符在printf中的含義完全不同。如果寫成printf(“%6d”, 123),很多童鞋應該就不會陌生了,這是設置域寬的意思。同理,%6s也是域寬。* 修飾符正是用來更靈活的控制域寬。使用%*s,表示這里的具體域寬值由后面的實參決定,如printf(“%*s”, 6, “abc”)就是把”abc”放到在域寬為6的空間中右對齊。