一般来说,我对编码很陌生,所以请原谅我说的任何愚蠢的话。
我正在尝试使用 printf() 打印(在 c 中)相当长的文本,但由于它不能全部放在屏幕上,它会跳转到文本的末尾,除非您向上滚动,否则开头是不可见的。有没有一种简单的方法可以让它打印长文本但留在开头并允许用户在阅读时向下滚动,然后再输入下一个命令?
在 Unix(包括 Linux 和 Mac)上,内置的命令行程序越来越少,完全符合您的描述。 是一个程序,它只是在显示下一页输出之前等待用户按 Enter 或空格。 稍有改进,因为它允许 vi 编辑器击键(例如 j 和 k)在输出中上下滚动。more
less
more
也可以在 Windows 命令行上使用。您甚至可以找到less
适用于 Windows的版本。
c:\users\selbie> your_program.exe | more
$> ./your_program | less
至于如何以编程方式执行此操作,这有点困难,因为它涉及测量控制台宽度和实现您自己的滚动缓冲区。可能有提供此功能的开源库,但控制台环境已经为产生长输出的应用程序提供了解决方案。
并非如此,尽管您可能会发现一个合理且简单的解决方案是仅打印一定数量的行(例如 30 行),然后提示用户在显示更多行之前按 Enter。
您甚至可以找出终端的当前大小。那是特定于平台的;对于 Linux,这里有解释:如何获取终端窗口宽度?