C言語'*'はscanf関数とprintf関数で運用する

4594 ワード

1、scanf関数では、「*」を付けた部分は無視されます(スキップされます).つまり、入力したデータは対応するパラメータに取得されません.
次に栗をあげます
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 

  ......