scanf関数による文字列処理でバッファオーバーランが起こり得るという話は有名のようですが、その対処法として
scanf(...); scanf("%*c%c", &c);
という書き方があるようです。
*が代入抑制文字であるということは先日知ったばかりなのですが
%*c%c とはどういう意味なのでしょうか?
一行目のscanfで意図せずバッファに読み込まれた'\n'が、%*cにより吸収(無視)され、その次にある%cにより、ユーザーが入力する文字が変数cに代入されるという解釈ですが、なぜそんなにうまいこといくのでしょうか?