如果不清楚,请道歉,但我真的不知道如何描述这一点。
看,我的问题是我试图从文本中读取用户输入fgets()
,但是,我还需要知道用户是否按下了一个特殊的键,比如/b
(退格键),因为理想情况下我希望它开始从行中删除字符在当前行为空之前,例如文本编辑器,这在 C 语言中是不可能的。
无论如何,如果您需要更多信息,请告诉我,提前谢谢。
编辑:我想我会继续发布我现在所拥有的内容,以防有人稍后遇到同样的问题以获得更好的主意
for (; ;)
{
int i;
int key = getch();
if (key == '/b')
{
printf("Hello World");
}
else
{
buffer[i++] = key; // adding character to text user is writing
}
i++;
}
请注意,由于链接器错误和/b
.
编辑 2:感谢 chqrlie 提出了引用特殊字符的正确方法。忘了你必须为他们使用反斜杠。
你当然可以用 C 语言编写文本编辑器 :-) 其中很多都是。
但是,您不能用可移植 C编写它们,因为标准 C 中不存在交互式逐字符终端 I/O 所需的设施。它们不存在是因为标准 C 不假定存在这样的作为终端的东西(例如,许多嵌入式 CPU 没有这样的东西),并且它远远超出了 ISO C 的授权,试图标准化具有终端的各种操作系统的不同通信协议- 类似 I/O。
getch
是 Windowsconio.h
头文件中的一个过时接口,也是 Curses 库中的接口之一,可用于许多操作系统(包括 Windows)。它与标准 C 的一部分无关fgets
,并且不能使用fgets
.
似乎您尝试做的事情最好使用 Curses 的实现来完成。(如果您使用的是 Linux,正如您的虚拟形象所建议的那样,您会寻找 Ncurses。)您可能希望查看构建在 Ncurses 之上的 Forms 库,它提供了更高级别的输入工具,例如可编辑的文本框。
另一个常见的输入处理库 GNU readline 也可能有用,但它不处理多行输入表单,因此可能需要做更多的工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句