在 C 中实现滚动文本

Fla*_*ash 5 c data-structures

我最近在接受一家跨国公司的采访时被问到这个问题。问题是

“我们需要显示一个屏幕,其中文本在屏幕底部滚动,其余屏幕为空。您将如何在 C 中完成此操作?您将使用什么数据结构......?”

任何想法请...!

jpi*_*912 4

假设这是一个控制台应用程序,您可以打印新行大约 24 次,这使您处于底部。

要打印的字符串存储在 81 个字符的固定大小数组/向量中(\0 在位置 81 处终止),并由某些馈送例程更新。这可能来自套接字、打字、文件、调用进程等......

在馈送时间(计时器回调、文件更改时、套接字缓冲区不为空等),您需要一次旋转文本一个字符。假设旋转是从右到左,将从 1(不是 0)到 80 的所有字符复制到 i-1 前面的位置。将新字符写入位置 80。

这里关键的图形技巧是用 \r 而不是 \n 终止 printf。\r 是回车修饰符:光标返回到第 0 列,并且不会转到下一行。这允许重新打印同一行。