Here are all the knotty issues of how to actually make the hard decisions and start work. This section is highly inflammatory, so if you don't agree with what I say, feel free to go ahead and do whatever you like. You are perfectly entitled to your ridiculous opinions. ;). Jokes apart, these are *my* opinions and YMMV (Your Mileage May Vary).
If you are sure you can use either C or C++, only then a choice exists. Most of the time, however C is used for writing a text editor. The C++ libraries for Ncurses are available. If you are interested in writing object oriented programs, remember that is equally possible to write good object oriented programs in C.
My personal recommendation is that you use C and it will expose you to a distinctly elemental and therefore tougher style of programming. C++ is my favourite language and I must say that it makes even difficult things easy. The best way in my opinion to learn object oriented programming would be to use C and object oriented concepts. However, opinions differ. Writing an editor is both a labour of love and a learning process. Neither love nor learning, I must note, are enjoyed if they are too easy.
Typically, most editors created used a linked list in one form or the other. However, there are a large variety of data structures used in the heart of the linked list. A partial summary of these are:
Each node in the linked list holds a single character of data. Representation and operations such as insert and delete are simple to write. The structure is resonably fast to display.
Evaluation : Most Flexible. Very expensive in terms of memory usage
Each node in the linked list holds a single word. Since a word is of undertermined lenght, each node in the linked list must lead to a dynamically allocated memory area. Operations are somewhat simple to execute. Translation of this format to display is complex and irritating.
Evaluation : Gross
Each node in the linked list holds a character array of a fixed size. Each such line maps directly onto a line to be displayed on screen. Operations are sometimes difficult to code. Translation of this format for display is fast and easy.
Evaluation : Effective, fast. Slightly expensive in terms of memory.
Each node in the linked list holds a pointer which dynamically stores the content of each line. Each line maps directly onto a line to be displayed on screen. Operations are usually rather difficult to code. Translation of this format to the display is fast, easy. Another major advantage is that if the screen is resized, this structure can adjust without too much problems.
Evaluation : Effective, fast. Optimum memory, but more difficult to code.
Each node in the linked list holds a pointer which dynamically stores the content of a paragraph. Each paragraph may or may not map to areas on the screen. Operations are usually rather complex. Translation of this format is not simple.
Evaluation : Urgh. Need I say more?
Each node in the linked list holds a pointer which dynamically stores the content of a page at at time. Each page may or may not map to the display. Operations are complex. Translation of this format to the display is also difficult. The one advantage is that this format allows for the use of virtual memory and managing very large files.
Evaluation : Slow. Difficult to code and modify.
Depends on how much fun / work / pain you want to have while writing your editor. You could any one of the ones listed above and write a excellent editor. I would however suggest that either the static / dynamic line based linked list is ideal in terms of complexity and efficiency. If you have a particularly interesting data structure that is rather different from the ones listed above, send it in to me, I'll add it to the list above!
One word answer. NO. Conio.h was described best by a senior member of Linux India who called it a ugly hack. And that is a fine description. Uconio.h are just plain wrappers to Ncurses. By the time you can convert functions to Uconio, you might as well have learnt ncurses and got some platform independence in the bargain. Not too many functions are supported by Uconio and you may not be all that well versed with Borland's API to the screen in any case. Ncurses is the recommended solution.