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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

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

Q&A

解決済

8回答

2752閲覧

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

siaron

総合スコア8

C

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

0グッド

2クリップ

投稿2018/05/09 18:36

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YomogiKOBO

2018/05/09 20:22

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

2018/05/09 22:42

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

2018/05/10 14:36

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

回答8

0

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

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

投稿2018/05/10 01:27

momf

総合スコア416

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siaron

2018/05/10 14:14

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

2018/05/10 21:18

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

2018/05/19 16:50

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

2018/05/21 23:17 編集

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

0

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

投稿2018/05/09 21:08

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2018/05/10 11:21

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

0

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

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

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

投稿2018/05/19 23:04

編集2018/05/20 01:28
asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

投稿2018/05/18 11:10

kaizen_nagoya

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2018/05/18 12:05

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

2018/05/20 18:14

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

0

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

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

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

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

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

投稿2018/05/13 10:27

gm300

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

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

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

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

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

投稿2018/05/11 00:00

mituha

総合スコア385

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mituha

2018/05/11 00:07

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

2018/05/11 09:15

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

2018/05/11 20:57

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

2018/05/11 21:03

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

2018/05/11 21:13

なお、「車輪の再発明」とは、プログラミング界隈ではよく使われますが、すでにある技術や部品を一から作り直すことを指します。 技術的な興味で行うには良いことですが、全くの初心者状態からでは得られる知見以上に時間を取られることになってしまいます。 今回の場合、エディターのUI部分を作るのは難易度が高すぎるので、上記のように既存の部品に任せた方が良いという意味で車輪の再発明と書きました。
mituha

2018/05/11 21:24

OSが処理している底の部分が知りたいのであれば、 [30日でできる! OS自作入門](https://www.amazon.co.jp/dp/4839919844) あたりに目を通してみるのも良いかもしれません。 なお、単純にエディターっぽいのを作ってみたいなら、他の人もかかれているように、C#を使ってWPFから入るのが初心者向けかと思います。
siaron

2018/05/19 16:36

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

0

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

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

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

投稿2018/05/10 11:31

編集2018/05/10 13:28
pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2018/05/10 11:48

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

2018/05/10 13:21

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

2018/05/10 13:31

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

2018/05/10 14:34

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

2018/05/11 10:48

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

0

こんにちは。

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

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

投稿2018/05/10 03:00

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siaron

2018/05/10 14:24

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

2018/05/10 18:36

> Windowsの作るんだからそれを使うのが一番スマートですよね・・ 目的次第ですが、Windowsプログラミングを基礎から学ぶ場合には、やはりVisual Studioが最適です。 手っ取り早くWindows上のプログラムを開発したい場合もC#がかなり強力ですのでやっぱりVisual Studioはそれなりにお薦めです。 Windowsは標準でテキスト入力する部品を持っています。リンク先はそれを自分のウィンドウへ貼り付けて作ってます。メモ帳の機能はそれに毛が生えた程度なので、その程度でもメモ帳もどきくらいは作れるという意味です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問