我正在搜索一个在输入之前打印字符串的函数。我知道printf
和gets
可以实现这一点,但我希望字符串保留在给出输入的最后一行。输出在主线程中处理,输入在主线程启动的另一个线程中处理。
例如,这是当前的控制台窗口(我输入了stop
- 命令,'>'是前缀字符串):
[12:00:00] Starting server...
>stop
当控制台输出一个新行时,我希望输入始终位于底线,如下所示:
[12:00:00] Starting server...
[12:00:01] Server started
>stop
我正在使用Embarcadero C ++ Builder XE2,支持Win32和VCL。
编辑:我目前正在使用此代码,导致在'>'之后打印输出前缀:
char buf[256];
printf(">");
gets(buf);
答案 0 :(得分:4)
您正在寻找的是异步输入/输出。
我要做的就是跟踪每个被按下的键并将其附加到字符串中。
当您按退格键时,它会删除添加到字符串中的最后一个字符,当您按Enter键时,它将提交当前命令。
当输出出现时,清除您输入的行,打印输出,然后向下移动光标并打印出您在字符串中保存的内容。
如果你愿意,你必须做一些线程工作,但我很确定我能够毫不费力地完成大部分工作。
其他可能的资源:
答案 1 :(得分:0)
尝试滚动除最后一行之外的所有控制台行,然后将消息打印到最后一行之前(ScrollConsoleScreenBuffer会帮助你)。这样输入线将始终位于其位置。