C语言 控制程序输出的滚动



在C程序中,如果一次输出大量文本,则屏幕可能没有足够的空间来显示所有文本,并且用户可能会错过某些信息。

如何使用户能够控制滚动以读取此类输出?

@Veltas是正确的,没有可移植的方法,甚至没有假设,你可以做出总是正确的。通常你喷出你的输出,让调用者决定如何处理它(piple和过滤器模型(。他们可能会决定将其重定向到文件、终端或过滤器。常见的桌面操作系统具有用于处理 spew 的实用程序(tee、更多、更少、findstr、grep 等(,但有时您希望您的应用程序更具交互性,也许您需要它们读取然后响应该输出?然后,您的选择是使用配置文件或命令行参数以及显示设备高度和宽度的"合理默认值"。使用这些,您可以计算喷出的行数,并且停止滚动视口。

需要考虑细微差别。如何处理长于视口宽的线?通常只让显示器换行并将输出计为多行,但您必须做一些数学运算,并且无法确定显示器是否真的进行换行。然后是只在单词边界处换行还是在换行时断开单词,哪些 ANSI 转义码可用(如果有的话(?实际上有很多属性需要考虑。

幸运的是,您可以使用或多或少的便携式终端/显示库来涵盖大多数常见的操作系统控制台环境。

  • 谷歌搜索 c 终端库

  • 谷歌搜索术语库(*nix系统(

  • 诅咒

我敢肯定,还有一些我那颗笨拙的大脑此刻想不起来了。

最新更新