これは迷信というより、本来は入門向けに難しい話をカットして説明するときの方便のようなものだったはずです。しかし、入門レベルのときはそれでよくても、入門者から次の段階に進む頃までその状況を引きずるべきではありません。また、入門者に指導する際も、難しい話を避けるのはよいとしても、誤った理解をさせてしまうのはどうかと思います。
標準関数のscanf関数は(gets, getchar, std::cinなどを用いても同じ)キーボードから入力するためものものではありません。これらの関数(またはオブジェクト)は、標準入力から読み込むためのものです。標準入力がどんなデバイスに結びつけられるかは実行環境次第ですので、こうした方法で必ずキーボードから入力されることを期待するのは危険です。
もちろん、特定用途および特定環境を想定した設計というのは普通にありますので、キーボードからの入力を想定することも”あり”ですが、自分が何をやろうとしているのかを理解しているのと、そうでないのとでは、雲泥の差があるのです。

![[迷信] freeでメモリを開放する](https://www.kijineko.co.jp/wp-content/uploads/2021/06/3649452_s.jpg)
![[迷信] オブジェクトの動的生成に失敗するとメモリリークする](https://www.kijineko.co.jp/wp-content/uploads/2021/06/4673249_s.jpg)
![[迷信] scanfではバッファオーバーランを防げない](https://www.kijineko.co.jp/wp-content/uploads/2021/06/3279051_s.jpg)
![[迷信] プログラムは必ずmainから始まる](https://www.kijineko.co.jp/wp-content/uploads/2021/06/2798657_s.jpg)
![[迷信] 0xe-0xeはゼロ](https://www.kijineko.co.jp/wp-content/uploads/2021/05/4195259_s.jpg)
![[迷信] absは常に非負の値を返す](https://www.kijineko.co.jp/wp-content/uploads/2021/06/4500264_s.jpg)