きっかけ
@yumetodo ところで #C言語 ではこんな「プロ」がいてキレたことがあります。「初心者にこんなの見せるな」以前に「この人の関わったソフトは買うな」レベル。https://t.co/ynDpyNMOEw
— utubyou009@憲法破壊反対 (@utubyou009) 2016年11月8日
私の自作の悪戯:https://t.co/O91FdfLIBu
ある「プロ」の書いた、初心者向けc言語入門プログラム: わき道
見てみると、コードの書き方云々の前にアルゴリズムがあかん。テーブル全数探査とか馬鹿げている。
全部書き直した
というわけで書き直した。
使用例。
気になる実装
まずアルゴリズムを変更した。
- 母音
- 子音+母音
- 子音+(y)+母音
- 子音+(y/h)+母音
この4つのテーブルに分けて、先頭文字からどのパターン化を判別し、変換するようにした。
元のプログラムではバッファーの大きさを取ってないわ、変換終了時のソースと出力の変換後の位置は取れないわでお話にならないので、strtol
関数を参考に書き換えた。
内部ではC++のイテレータのように作業位置のポインタと終端のポインタを持つようにした。下手にindexに変換するとsigned/unsigned
が面倒だからだ。
エラー処理は、enum
を書いてそれのformatterをつくるというありきたりな実装にした。その気になればstd::error_code
でのラップも簡単だろう。