C言語'*'はscanf関数とprintf関数で運用する
4594 ワード
1、scanf関数では、「*」を付けた部分は無視されます(スキップされます).つまり、入力したデータは対応するパラメータに取得されません.
次に栗をあげます
入力:12345*を付けない場合、‘1’は変数bによって1文字として読み出され、吸収され、’2345’は整形変数aとして吸収される.しかし*を加えた後、文字変数bは無視されるので、‘1’が読み取られた後に捨てられ、変数は一切与えられず、‘2345’だけがaに吸収される.
2 printf関数において’*’は、’*’の代わりに後のパラメータを用いた位置を表し、変数で出力フォーマットを制御する効果を奏する.
その1つは、%d、%c、%sの効果は同じです.出力が何列かを表す意味は以下の通りです.
二つ目は、%sのもう一つの状況といえば、まず以下の内容を理解することです.
故に
3、他の
次に栗をあげます
int a;
char b;
scanf("%*c%d",&b,&a);
入力:12345*を付けない場合、‘1’は変数bによって1文字として読み出され、吸収され、’2345’は整形変数aとして吸収される.しかし*を加えた後、文字変数bは無視されるので、‘1’が読み取られた後に捨てられ、変数は一切与えられず、‘2345’だけがaに吸収される.
2 printf関数において’*’は、’*’の代わりに後のパラメータを用いた位置を表し、変数で出力フォーマットを制御する効果を奏する.
その1つは、%d、%c、%sの効果は同じです.出力が何列かを表す意味は以下の通りです.
int a=1,b=2,c=3,d=5;
printf("%*d
",a,d); // 5; printf("%1d
",d);
printf("%*d
",b,d); // 5; printf("%2d
",d);
printf("%*d
",c,d); // 5; printf("%3d
",d);// 3 ,
二つ目は、%sのもう一つの状況といえば、まず以下の内容を理解することです.
printf("%3.7s",b); // 3 7
故に
printf("%.*s",1,"abc"); // a
printf("%.*s",2,"abc"); // ab
printf("%.*s",3,"abc"); // abc, : 3 abc, '\0'
3、他の
printf("%04d",a);// 4 , 0 4
......