控制程序输出的滚动

时间:2018-06-16 11:22:23

标签: c scroll stdout

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

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

1 个答案:

答案 0 :(得分:1)

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

需要考虑细微差别。如何处理比视口长的线宽?通常让显示器包裹线并将输出计为多行,但是你必须做一些数学运算而你不能确定显示器实际上是否换行。然后,当你换行时,是否只包装字边界或破坏单词,哪些ANSI转义码可用,如果有的话?实际上有很多属性需要考虑。

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

我确信现在还有其他人的大脑无法回想起。