今まで尻込みしていたプログラミング、C言語の学習をはじめました。
とりあえず簡単な英語辞書ソフトのようなものを作ってみたので、ブログのネタにしようかなと思います。
Contents
プログラムの概要
プログラムの概要としては、辞書データが書き込まれたテキストファイルの”dit.txt”を読み込んで、英単語の登録順、昇順、降順、無作為の3パータンで表示するプログラムです。
はじめに英単語と発音記号を表示し、Enterキーで用語の意味を表示、次のEnterキーの入力で例文を表示します。
英語辞書のデータを記述したdic.txtは上のような感じに記録します。
空白記号で各データを区切っているので、英語の例文の空白はアンダースコアで記録しています。
処理の内容
コード量も少なく基本的なコードで実装しました。
ファイルの読み込み
fopen()とfscanf()を利用してdic.txtに記録されたデータを構造体に記憶します。
並び替え
選択されたモードに対応するソーティング関数を呼び出してデータの記録された構造体配列を並び替えます。
リードモード
ここは共通の処理で、英単語と発音記号を表示し、fgets()でEnterキーの入力を待つ。Enterキーの入力を受けると、英単語の意味を表示し、もう一度fgets()でEnterキーの入力を待つ。再度Enterキーの入力を受けると例文を表示し、fgets()でEnterキーの入力を待つという処理を継続します。
問題点や課題
課題や問題点はいくつもあります。
コマンドプロンプトで綺麗に表示されない
cygwinやLinuxの端末上では特に問題なく表示できていますが、Windowsのコマンドプロンプト上で実行すると表示が上手く行きません。
2つの画像を見比べて貰うと分かりますが、コマンドプロンプト上では表示されるはずの文字が消えてしまっています。
コマンドプロンプトをリサイズしたりスクロールすれば正常な表示になりますが、コードでの対処が上手くできませんでした。
念のためバッファを強制出力するfflush()などを使ってみましたが、特に効果はなく、リサイズすると表示が治ることからコマンドプロンプト特有の問題のような気がしますが、詳しくは分かりませんでした。
他のモードの実装
はじめは英語翻訳サイトのWeblioの単語帳のような機能を、ローカルの端末上で動作させたいなと思って作成しました。
なので英単語関連を表示するリードモードを実装してみましたが、何か書き取り系の機能で有用性があるものを実装できるといいなと思っています。
終わりに
はじめての自分で作ったプログラム、とても簡単なプログラムですが、英語単語の学習に使ってみようと思います。
“engdic” をダウンロード engdic_v20170207.zip – 331 回のダウンロード – 129 KB