gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

いいから使うなscanf

んっと。C++ってかC言語のお話なのですが。
C言語のライブラリにおいて「使うな」といわれている関数がいくつか存在するのですが。
取り合えず筆頭に上げたいのがscanf。
なにせこの子、入力で文字次第で平気でバッファにデータを残す、データ種別が違うと「バッファにデータを残したまま」プログラム自体が異常終了するなど、問題山積み。
なんていうか「何があろうが絶対に」使っちゃいけません。


ただ、キーボード入力が簡単にとれるとかいうクソヌルイ理由からなのか、どうも大学だの専門学校だのでC言語を教えている現場では「普通に」使わせているフシがありまして。
取り合えずそんな教師連中を /dev/null にリダイレクトしてみたいものです :-P


「じゃぁなに使えってのさ」って話になるのですが。getsを使えば簡単…とかいうと、さらに巨大な裁きの雷が舞い降りてきます(getsもまた「絶対に」使っちゃいけない関数です)。
入力はfgetsを使いましょう。ちゃんと入力データが取れますし、変なデータは自力で切り分けられますし、getsのように「バッファオーバフロウが原則」なんてことはなく、ちゃんと最大長を「自前で」指定できますので。


っていうか、そーゆー事を教えるのが学校の役目なんじゃないんでしょうか???