• 締切済み

C言語で1行エディタ作成

こんばんわ。現在SEを目指して日々勉強しております。入力した単語を16進数に変換するプログラムを作成しているのですが、以下の内容が分かりません。引き続き自分で調べてみようとは思うのですが、有識者の方々から何かアドバイスを頂けないかと思い投稿致しました。 ■文字削除 ・BackSpaceで入力した文字を消去可能にするため、適した関数はあるか? ・関数を使用しないでも実現可能なのか? ・全角/半角文字も同じようにBackSpaceで削除するにはどうすればいいのか? 解決の糸口を掴めればと思います。どんな事でも構いませんので、御回答の程宜しくお願い致します。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

GNU ReadLine が参考になるのかも http://ftp.yz.yamagata-u.ac.jp/pub/GNU/readline/ >・BackSpaceで入力した文字を消去可能にするため、適した関数はあるか? 基本的には、fgets などコンソールからの入力をバッファするものは、BS を受け付けたような気がします。 OS、コンパイラ依存かもしれません。 >全角/半角文字も同じようにBackSpaceで削除するにはどうすればいいのか? 文字判定を行う必要があると思います。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

No.1です。補足です。 昔、データベースソフトの入力ルーチンの日本語化を行ったとき、1行入力関数を修正しましたが、主要部分だけで数千行ありました。そこから呼ばれる小さな関数抜きで。 あと、共立出版の「ソフトウェア作法」に「文書編集」という項目があって、エディター作成の参考になると思います。 この本と、同じ著者の「プログラム書法」は、プログラマの必読書だと思っています。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>・BackSpaceで入力した文字を消去可能にするため、適した関数はあるか? 標準関数にはありません。 >>・関数を使用しないでも実現可能なのか? できないと思います。 >>・全角/半角文字も同じようにBackSpaceで削除するにはどうすればいいのか? 全角/半角をうまく処理できる処理を考えて、用意されている関数や自分で作った関数等を使ってコーディングします。 エディターの作成方法を扱った本は、昔よく見たのですが、最近はあまり見ないですね。セブン&ワイで検索したら、以下の本がありましたが、絶版でした。 http://www.7andy.jp/books/detail?accd=30903160 linuxのフリーソフトの中にCで書いたエディターもあったような気がしますので、それらを参考にされるといいと思います。なお、GNUのソフトは1行編集関数をライブラリで用意していた気がします。 まあ、エディタって作成するのは以外と難しいもんです。がんばってください。

noname#21887
質問者

お礼

早急な御回答ありがとうございます。色々本も探しているのですが、中々参考になるものが見つかりません。自分なりに工夫して頑張ってみようと思います。本当にありがとうございました。

関連するQ&A