Cでは、パラメーターとともにscanf()
を使用すると、scanf("%d %*d", &a, &b)
の動作が異なります。 2つではなく1つの変数の値を入力します!
これを説明してください!
scanf("%d %*d", &a, &b);
*
は基本的に、指定子が無視されることを意味します(整数は読み取られますが、割り当てられません)。
man scanf からの引用:
* Suppresses assignment. The conversion that follows occurs as usual, but no pointer is used; the result of the conversion is simply discarded.
アスタリスク(*)は、フォーマットの値は読み取られますが、変数には書き込まれないことを意味します。 scanf
は、この値のパラメーターリストに変数ポインターを期待していません。あなたは書くべきです:
scanf("%d %*d",&a);
http://en.wikipedia.org/wiki/Scanf#Format_string_specifications
パーセント記号の直後のオプションのアスタリスク(*)は、このフォーマット指定子によって読み取られたデータが変数に格納されないことを示します。