質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • C

    3988questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

c言語でエディタを作るには

解決済

回答 8

投稿

  • 評価
  • クリップ 1
  • VIEW 808

siaron

score 2

初心者です
c言語でエディタを作るにはどういったライブラリやら命令が必要ですか?単純に文字表示命令で書いて位置をずらしつ表示ですか?
メモ帳みたいなのはまた別の命令が必要なのでしょうか?
よろしくお願いします

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • YomogiKOBO

    2018/05/10 05:22

    エディタを作って動作させたい対象となるのはWindows?MAC?Linux?

    キャンセル

  • Zuishin

    2018/05/10 07:42

    なぜ C 言語なのですか? C 言語でエディタを作ることは可能ですが初心者の手に負えるかどうかはまた別の話です。他にもっと適した言語があります。

    キャンセル

  • siaron

    2018/05/10 23:36

    ありがとうございますWindowで考えています、ほかに適した言語とはなんでしょうか?何が良いのかもよくわからないです

    キャンセル

回答 8

+4

既出ですが、エディタを作るには実際にC言語で書かれたエディタのソースを参考にするのが一番です。

CLI限定に絞るならターミナル表示や標準入力周りを上手く拾わないといけません。
ncursesなどのライブラリはそこらへんを上手く扱ってくれるので、がっつり作るならこういうライブラリを使うのが良いでしょう。
ちっちゃいエディタを自作してみたいだけならこういうエディタのソースを見てみればだいたいの仕組みがわかると思いますよ。antirez/kilo

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/10 23:14

    ありがとうございます
    まだ全然わかりませんがリンクや名前など取っ掛かり等教えてくださり助かります、用途としては将来的に自分用の入力支援ツールといいますか
    そういったのを考えています

    キャンセル

  • 2018/05/11 06:18

    他のコメントも読んだ感じだとWindows、そしてGUIでのエディタを想定しているようですね。
    それならば正直C言語というよりVisual StudioとかでC#なりを使った方がいいかな、と思いました。
    1部コメントで色付けしたいと言っているようですが、これは入力中リアルタイムでやりたいものですよね?
    ちょっとハードルが高いかも知れませんが、C#のWPFという物で作っていけばいいかもしれませんね。
    もちろん、C言語をやるなとはいいませんが、割と初心者が挫折しやすい言語なので、ちょっと気合が必要かもです。
    ターミナルでのみ動くエディタならC言語はいいと思うので、せっかくならターミナルで動作するエディタも作ってみるのもいいと思います。

    キャンセル

  • 2018/05/20 01:50

    ありがとうございます
    最近テキストエディタはハードルが高いとかWPFもよく聞きます・・
    ええと、命令の色付けが難しいのはいいとして
    そういう命令一覧じゃないですけど、変数は変数、関数は関数、宣言は宣言、とかのみたいなやつってエディターを作る人が作ってるんですか、そういうのもフォントじゃないですけど、そんな感じのって用意されてないんでしょうか
    ターミナルとはなんでしょうか?汗

    キャンセル

  • 2018/05/20 09:45 編集

    それはつまりコードのシンタックスハイライトみたいな物ですよね?
    あれはもちろんエディタの開発者側たちが作っています。
    大体は作者側で特定の言語のこういう単語が出てきたら色を付けるってやってると思いますが、1人で全てのプログラミング言語なりに対応するのは厳しいので、大体は色んな人がプラグイン形式のような感じでハイライトを作ってる方が多いのかな…
    特定の言語のみでいいなら自分で対応してもいいかと思います。

    ターミナルとはLinuxなどで使用している黒い画面にコマンドのみで操作するあれです。
    Windowsでもコマンドプロンプトがありますよね、あれもターミナルみたいなものです。

    キャンセル

+3

vi, micro emacs, ed, sed といった ちいさなエディタのソースをみつけてきて
糖鎖するとよいです。
(昔はこれらが 英語版しかなくて、日本語対応させることをしてみたことがあります)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/10 20:21

    microEmacsは触ったことがありますが、それでも結構な大きさ。
    初心者には難しいのでは?

    キャンセル

+2

初心者におすすめするものではありませんが、
ScintillaというOSSなソースコードエディタ用の部品があります。

英語力に自信がありドキュメントを読破できるのならば挑戦してもいいでしょう。

実装例としてはSciTEやNotepad++やRPGツクールのスクリプトエディタ部分等があります。
(XP/VX/VX AceはScintilla使ってたはず、MVはちょっと忘れた)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+1

まずは、既存のエディターの拡張機能開発から初めてはいかがでしょうか?  
例えば、Visual Studio Code(VSCode)では こちら を参照。  

独自の色付け等をしたいのであれば、現状、それらがどのようにして行われているかや、
どのような構造を持っているかの参考になると思います。  

通常、目的の殆どは拡張機能開発で事足りると思いますし、
いきなりテキストエディターを作り始めるのは難易度や車輪の再発明的に無駄が多くなります。  

まぁ、プログラマーとしては、エディターやオレオレ言語は作りたいよね!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/11 09:07

    むかーし、HTMLエディター作った時は結局はRichTextBoxを利用してRTF調べて色付けとかしました。
    ただし、構文解析は割と力技だったような…
    ツール用途や色付けとかを考えると今ならUIから入るよりも、まず、コンパイラ関連から調べて構文解析とかから入った方が良いかもしれません。

    キャンセル

  • 2018/05/11 18:15

    お返事ありがとうございます
    構文解析とは文章をどう判断してコレはコレとすることでしょうか?それは自分で考えてみるとして
    拡張機能のやりかたもしらないです汗
    HTMLエディターのようにRTFを調べると…
    自分の場合テキストよみこんで変数に入れて文字を表示するレベルのことしかできないので車輪と言っていたように部品の大きさが違うのでもっと細かい部品の知識がないのです汗
    構文云々よりは文字表示命令とテキストに表示される表示は何が違うのか?みたいな感じです
    言語やエディターは作ってみたいですね、こんな全然知らないのに大きな声ではいえませんが…

    キャンセル

  • 2018/05/12 05:57

    言葉足らずでした。
    まず、RichTextBoxとは、いわゆるWordみたいに色付きのテキストエディタを作成可能なようにWindowsに用意されているコントロールです。
    このコントロールを使用すると指定した文字範囲に色をつけたりが可能です。
    コントロールにそのようなAPIが用意されています。
    しかし、キーワードに色付を行う場合に、一つ一つAPIを呼び出して処理してしまうと、速度的に遅くなってしまいました。
    そこで、RichTextBoxが内部的に使用している、RTF(Rich Text Format)を直接いじっていました。

    キャンセル

  • 2018/05/12 06:03

    現在においては、色がつく文字列表示と言えば、このTeratailを見るのにも使用しているであろう、WEBブラウザが一番わかり易いかもしれません。
    そして、VSCodeやAtom等、最近のエディターはWEBブラウザと同じ部品(Electron)を使用して表示を行っています。

    キャンセル

  • 2018/05/12 06:13

    なお、「車輪の再発明」とは、プログラミング界隈ではよく使われますが、すでにある技術や部品を一から作り直すことを指します。
    技術的な興味で行うには良いことですが、全くの初心者状態からでは得られる知見以上に時間を取られることになってしまいます。

    今回の場合、エディターのUI部分を作るのは難易度が高すぎるので、上記のように既存の部品に任せた方が良いという意味で車輪の再発明と書きました。

    キャンセル

  • 2018/05/12 06:24

    OSが処理している底の部分が知りたいのであれば、
    [30日でできる! OS自作入門](https://www.amazon.co.jp/dp/4839919844)
    あたりに目を通してみるのも良いかもしれません。

    なお、単純にエディターっぽいのを作ってみたいなら、他の人もかかれているように、C#を使ってWPFから入るのが初心者向けかと思います。

    キャンセル

  • 2018/05/20 01:36

    かなり遅くなり申し訳ありません
    ブラウザと同じ部品とは思ってませんでした
    Windowにブラウザ表示させるってことですか
    まだそのパーツの事良く調べてないし解ってないので変な事いってるとは思いますがそういうのもあったなぁと思って
    そうですね、OSも知ってはみたいです
    今までそういうAPIって命令というか関数群としか認識なかったですが
    物凄い素人考えですがふとWINAPIってウィンドウズのためのものなんだろうなと
    Windowのウィンドウを表示するんだからパソコンに入ってるんだろうなって思ってましたし
    ええとRTFとか話出ましたがやっぱり普通の書き方じゃないんですね?
    ウィンドウに文字表示命令だとウィンドウに更に絵をかいて、みたいななんとなく無駄な印象は思ってて
    メモ帳はそのウィンドウと一緒というか、要するに1ウィンドウ、2、表示でプロセスが一個少ないか、無駄なプロセス使ってないかってことを言いたかったです
    プログラムの勉強しに来てるのに完全に日本語でしか話してないですけど汗
    ともかくそういう部品があるのとOSの入門とか教えてくださるのはありがたいです、ありがとうございます!!

    キャンセル

+1

こんにちは。

メモ帳ということはWindows向けでしょうか? 極簡単なものなら比較的簡単に作れます。
↓はかなり古いですが、Windows SDKなら恐らく今も互換性があるので参考になると思います。
第74章 メモ帳を作る その1
なお、Windows SDKにある標準機能を使う方法ですので、付加価値を付けるためカスタマイズしようとすると途端にハードルが上がりますが、とっかかりとしては良いかも知れません。

Windows SDK自体の使い方については、「Windows SDK」で検索するとそこそこでてきますが、新しいところがあまりないのが辛いところです。Windows SDKやPlatform SDK等の入手方法が書かれていますが既に場所が変わっている場合が少なくないようです。
Visual StudioのVisual C++をインストールすればWindows SDKもついてきますのでこれを利用するのが楽でよいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/10 23:24

    ありがとうございます
    新しいものが出るのは良いですが逆に何がなんだか素人には見分けがつかないですね汗
    最初何で作るか悩んだときとかどの環境でやろうか悩んでVisual Studioは自社製品向けだからとかネットで書かれてて避けてましたがWindowsの作るんだからそれを使うのが一番スマートですよね・・
    言語やらOSやら成り立ちわからないので、そのリンクにあるようになぜもどきなのかも書いてある意味がわからないです
    それなら、何で元々メモ帳は作られてるんでしょうか?

    キャンセル

  • 2018/05/11 03:36

    > Windowsの作るんだからそれを使うのが一番スマートですよね・・

    目的次第ですが、Windowsプログラミングを基礎から学ぶ場合には、やはりVisual Studioが最適です。
    手っ取り早くWindows上のプログラムを開発したい場合もC#がかなり強力ですのでやっぱりVisual Studioはそれなりにお薦めです。

    Windowsは標準でテキスト入力する部品を持っています。リンク先はそれを自分のウィンドウへ貼り付けて作ってます。メモ帳の機能はそれに毛が生えた程度なので、その程度でもメモ帳もどきくらいは作れるという意味です。

    キャンセル

+1

エディタを作る目的は何でしょうか?
アプリ内の入力でテキスト編集したいという事でしょうか?
C言語で作る意図は何かあるのでしょうか?

メモ帳と言うことから、するとWindowsかと思いますが、編集用のWindowsを作成し、そこでの編集を行いたいと考えます。その場合、C言語での作成は困難と思います。まず、C言語から、Windowsのライブラリ(Window操作用)を呼び出す事が出来ないと思います。(裏技を別にして、私は知りません)
vi, ed とか、古いエディタはありますが、それらは元々、コンソール(文字出力しかできない端末)ベースです。これらならば、C言語も現実的かと思いますが、、。

肝心なところを忘れていました。
アプリ内で、使うならば、TextBoxとかで複数行モードにしておけば、メモ帳程度の機能があったかと。(MFCの頃、手抜きで使った) MFCの最初の頃は、64Kの壁がありましたが、いつの間にか、無くなっていました。(多分、あるでしょうが、未確認)
全て、自分でやろうとすると、全ての入力と表示を管理する事になります。まず、ここからですが、初心者にはかなりの難易度ではないかと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/10 20:48

    > C言語から、Windowsのライブラリ(Window操作用)を呼び出す事が出来ないと思います。(裏技を別にして、私は知りません)
    裏技と言うほどではなく、Win32 APIがあります。これは、C言語で使いやすいように設計されています。

    キャンセル

  • 2018/05/10 22:21

    失礼しました。Win32APIでできるようでした。
    しっかり忘れてました。 今から、Win32APIを学ぶのも ? とは思いますが。

    キャンセル

  • 2018/05/10 22:31

    そうですね。Win32 APIをアプリケーション開発の為に新規で学ぶのは、保守や解析、あるいは.NET FrameworkでP/Invokeで使う為以外ではあまりお勧めできませんね。

    キャンセル

  • 2018/05/10 23:34

    皆様ありがとうございます
    詳しくないのでなぜcなのかは理由はないですが
    自分で色々出来るようになりたいという気持ちはあります
    用途としては自分用の制作支援ツールを作りたいと考えていて
    最近だとよくあるらしい、命令なら何色、変数なら何色、コメントなら何色、みたいな色分けや、何行目とか、色々ステータスを付けたいという感じです
    ほかの機能も考えたりはしていますが、最低限その色付けがしたいです
    投稿に書いたように疑似的というか力業ならできると思いますが
    ちゃんとしたテキストエディタを作りたいです
    よろしくお願いします

    キャンセル

  • 2018/05/11 19:48

    命令なら、色を変えたいとか、コメントなら、、とかだとかなり大変ですね。
    ここで質問している内は、無理じゃないかとも思いますが、やる気次第です。
    別の人も書いていますが、VSCodeとかの機能拡張からってもありでしょう。
    ソースコードも公開されている(Git Hub版)のでそれを見るのもあり。他にも多数ありますが、どれも半端なコード量では無いと思いますので、頑張りましょう。

    キャンセル

+1

テラタームとか、puttyみたいなものを書いたことがあります。その経験からすると3つのパーツが要ります。

  1. 画面に編集内容を表示する部分。単純なテキストであれば改行以外はテキスト表示するだけ。編集内容の文法に応じて、色を塗ったり改行する場合は、ここで実現する。

  2. テキストを編集する部分。キー入力に応じて、編集内容を変える部分。普通のエディタには、カーソルかマウスでクリックとかがあるのクリックされたときにどうするのか実現する。何かを一括変換したり、もっと高度な自動化機能が必要な時は、ここで実現する。

  3. 編集内容をファイルにセーブしたり、プログラムに渡す部分。テキストファイルを読み書きするだけなら、fileをopen=>read=>write=>closeを行う。ブラウザに組み込むのであれば、HTTP GETしてPUTする部分。

どこから作るかは好みなのですが、プログラム初心者なら2. ではないかと思います。配列に文字列を入れて、いろいろやってみる。見た目にインパクトがある何かを作るのであれば1. ツール等の動作が不明でなんとか制御したいなら、3。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

PSE portable Screen Editorという本に、エディタのCソースコードが掲載されていました。VZエディタを移植する前は、PSEを使っていました。C言語教育にもソースコードを利用していたように記憶しています。

現在、横浜市中央図書館と国会図書館にはあると検索では出てきました。 ISBN 9784915718199

ps.
VZエディタはアセンブラです。C言語で書かれたlessと同じような仕組みで画面の表示の高速化を図っています。アセンブラからCのソースを起こすのもいいかもしれません。

国会図書館ではFDの電子ファイルの読み出しをさせてもらえません。FDだったかどうか覚えがなく、、、。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/18 21:05

    Vzエディタを購入すると、ソースが付いていました。確か、FD2枚組。
    見たことはありますが、理解できたかどうかはお察しの通り。ただ。後日談として、他の便利なエディタを知っていたら、作らなかったと聞いた(読んだ)事ががあります。果たして今、そこにエネルギーを掛ける必要があるかどうか?

    キャンセル

  • 2018/05/21 03:14

    ありがとうございます
    何でも自分で出来たら一番いいし憧れますがまだ遠い道のりですね
    図書館にそういうのもあるんですね
    ちっちゃい図書館しか見たことないので選択肢にすら入ってませんでした
    人の読むのって苦手です
    マクロとか置き換えみたいなの探してそれに置き換えを行ったやつを探して命令置き換えるとか解析みたいなやる人いないんでしょうか
    変な癖があったら難しいんでしょうけど

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • C

    3988questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。