c - 在控制台的输入空间添加一个字符串

标签 c windows visual-studio command-line-interface

我真的不知道如何解释这个,所以标题可能具有误导性。

我正在用 C 编写一个小型文本编辑器,并将整个文件的内容保存到一个字符数组中。现在我想向用户显示整个字符串,这样用户就可以通过定位光标/搜索然后键入或删除字符来在命令窗口中编辑字符串。按回车键或其他键会将文本保存到新字符串并将其写入文件。

类似于在 nano 或 vi 等 linux 文本编辑器中打开文件时发生的情况...您会得到一个光标,您可以在文件周围移动并进行更改。

如何在 C 中完成?我不需要它像在 linux 编辑器中那样,只需将字符串放入输入区域(就像用户键入文本一样)就足够了。

最佳答案

您必须使用 Terminal capabilities (a.k.a Termcaps) .它们是您的终端可以解释的特殊字符(例如来回移动光标,或清除屏幕)。以下是维基百科对 Termcap 数据库的描述:

A termcap database can describe the capabilities of hundreds of different display terminals. This allows programs to have character-based display output, independent of the type of terminal. On-screen text editors such as vi and emacs are examples of programs that may use termcap.

通过使用终端功能,您将能够控制光标在编辑器中的行为方式,以及输入字符的显示方式。一个很好的例子就是使用颜色来突出显示语法。

我建议您使用 GNU Termcap library构建跨终端应用程序。一旦掌握了主要原理,它的用法就相对简单了,我以前用它来实际构建一个 shell(例如 bashsh)。

接下来,您可能还想查看 differences规范非规范 终端模式之间。鉴于您希望在编辑器中实现何种功能,您可能希望覆盖您的终端解释某些输入的方式。

另见:

关于c - 在控制台的输入空间添加一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32288020/

相关文章:

c - 免费功能不起作用

windows - 如何从不同目录的其他批处理文件中的批处理文件启动 exe 文件?

visual-studio - 如何强制从代码覆盖范围中排除某些程序集?

c# - 使用动态 Linq 过滤集合

c - 你将如何解决这个 opengl 必要性(在 c 中),涉及知道用户点击了棋盘游戏中的哪个方 block ?

c - c 中带有宽字符的 va_arg,如何处理 %S

windows - 如何在出现第一个错误时停止 PowerShell 脚本?

windows - 为什么 AutoHotkey 响应 "System cannot find the file"错误?

javascript - 如何在 Visual Studio .NET 2008 中保留 JavaScript 全局变量的智能感知

c - 从函数传递一 block 内存