是否可以使用 C 将输出打印到终端,以便用户不完整的输入保持不变?
该用例是一个多线程程序,它输出批量结果,同时等待用户输入下一个任务。问题是,当将输入重新输入到程序中时,每当程序输出另一行时,不完整的输入就会被清除到输出行中。
欢迎所有想法
最佳答案
最基本的问题是,用户键入一些输入与运行的所有线程无关,从程序的角度来看,它看起来很像另一个生成数据的线程。
现在您遇到了麻烦,您需要通过某种方式同步您的程序和用户。所以你需要进入屏幕的单一控制。
All ideas are welcome.
嗯,这是这个想法(但是,您将生成依赖于特定于操作系统的方法的不可移植代码):
- 读取用户输入而不将其打印在屏幕上 - 这是特定于操作系统的,但在 Windows 上,您可以使用
conio.h
header 中的getch
。< - 用户输入需要缓冲,并且您可能需要对用户删除字符(必要)或使用箭头移动光标进行特殊处理(为了简单起见,您可能只是不支持,但用户会不太满意)。
- 输出自己的数据时,覆盖用户输入(您可以使用 ansi escape codes 移动光标),但请确保清除所有写入的数据,即。 e.如有必要,用额外的空格覆盖。
- 然后将用户的输入重新打印到下一行。
关于c - 使用 C 打印行而不覆盖尚未在终端中提交的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58197728/