で、使用方法に注意が必要。
●簡潔なまとめ
%c は使わない。下記例
scanf("%c", &a);
空白文字が途中にあるとバッファに残り、次の入力で続きを勝手に入れられる(This is a pen. など)
例:
char a[20];
scanf("%s", a);
解決策
scanf("%s[^\n]", a);
バッファオーバーラン
文字数オーバー対策、下記では19文字(19+1(終端))までと指定してあるchar a[20];
scanf("%19s%*[^\n]", a);
配列数-1 なので注意、%*[^\n] は19文字を超えたら、超えた分、無意味にする
最も簡単な対処法
以下のコードを入れれば、入力バッファをクリアしてくれるらしい
scanf("%*s");
情報源
https://ja.wikipedia.org/wiki/Scanf#scanf.E3.81.AE.E5.95.8F.E9.A1.8C.E7.82.B9.E3.81.A8.E5.9B.9E.E9.81.BF.E6.96.B9.E6.B3.95