Cでは、パラメータがのscanf()
を使用すると、動作が異なります。 2つではなく1つの変数の値を入力します。scanf()スキップ変数
これを説明してください!
scanf("%d %*d", &a, &b);
Cでは、パラメータがのscanf()
を使用すると、動作が異なります。 2つではなく1つの変数の値を入力します。scanf()スキップ変数
これを説明してください!
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.
http://en.wikipedia.org/wiki/Scanf#Format_string_specifications
任意アスタリスク(*)パーセント記号は、このフォーマット指定子によって読み取らデータが中に記憶されているべきではないことを示した直後変数。
アスタリスク(*)は、formatの値は読み込まれますが、変数には書き込まれないことを意味します。 scanf
は、この値のパラメータリストで変数ポインタを期待していません。
'fscanf'を使って読みたい文字の後にあるすべての文字を無視する方法はありますか?つまり、行末まではすべて無視しますか?私はかなりの時間それを探していました。 – Bionix1441
@ Bionix1441 'scanf'は、書式文字列を満たすのに必要なだけ、' stdin'(および 'fileから' fscanf')から多くの文字を読み込みます。変数に不正な値が入っている場合は、フォーマットに一致するエラーが発生します。戻り値を確認してください。それが助けにならない場合は、適切な質問を例文とともに投稿する必要があると思います。 –
実際にファイルに存在しない整数を破棄した場合、fscanfは失敗しないようです。 – Bionix1441