【发布时间】:2009-05-09 08:02:43
【问题描述】:
我正在用 C 编写一些小程序——一些登录、注销、创建帐户、发送消息到另一个帐户的交易——我可以在这些程序的基础上进行构建、更改、创新和完善以完善我的C中的技能。
我想弄清楚的是如何实现“撰写消息”选项的一部分。在提示您输入消息的收件人、主题和正文后,我希望能够返回并编辑它们——而不必重新输入整个内容。因此,如果我选择“编辑消息”选项,它会写出我拥有的内容,然后让我回去更改一些内容。
我在x86 assembly 中做过类似的事情,或者开始做类似的事情,所以我基本上了解这将如何在机器级别实现,但我不知道如何在C. 我该怎么做?
在 C 语言中,以下内容让我感到困惑:
- 处理可能冗长的输入的好方法
- 如何写出文本并允许用户对其进行编辑,而不会超过某个特定点
- 如何控制光标的位置
此外,如果之前已经这样做过,并且存在用于此类事情的函数库(甚至是我不知道的标准库),请注意我确实想推出自己的
strong> 以学习为目的。我想我脑海中的方法是一次读取一个字符的消息正文,以便我可以考虑回车并创建多行消息。但我不确定我将如何退格通过它。我想从命令行执行此操作真的很难(?)。
如果不是不可能,将光标移回并删除已经超出输入缓冲区的字符...我每次都必须“重新绘制屏幕”吗?就像我可以控制整个控制台并在某些位置读取和写入击键吗?还是离机器太近了?我有点用汇编来做,但是使用了 16 位中断,我不允许在 C 中使用它...这是我在汇编中写的:
(以前在这里的图像已经消失)
程序将一个字节值转换为代表该字节的两个字符代码,然后跳转到右列并写入原始字节(显示为字符),然后跳回并写出另外两个十六进制数字,在下一个插槽中...等等,从左到右,从上到下...这很容易,但我不知道如何在 C 中实现它。我能做的就是是INT 21 样式的输入和输出,向控制台写入行,从而向上滚动窗口等等。
【问题讨论】:
-
正如我在回答中所说的那样——你不能在 C 中这样做——你必须使用库或操作系统特定的调用(不是 INT 21——那些日子一去不复返了)。