天天看點

scanf和printf中*的用處

一、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;
} 
           
scanf和printf中*的用處

二、printf

在printf裡用**修飾符的含義完全不同。如果寫成printf(“%6d”, 123),很多同學應該就不會陌生了,這是設定域寬的意思。同理,%6s也是域寬。* 修飾符正是用來更靈活的控制域寬。使用%*s,表示這裡的具體域寬值由後面的實參決定,如printf(“%*s”,6, “abc”)就是把”abc”放到在域寬為6的空間中右對齊。

int main()
{
	char s[] = "abc";
	printf("%*s\n", 6, s);
}
           
scanf和printf中*的用處

繼續閱讀