我最近在接受一家跨国公司的采访时被问到这个问题。问题是
“我们需要显示一个屏幕,其中文本在屏幕底部滚动,其余屏幕为空。您将如何在 C 中完成此操作?您将使用什么数据结构......?”
任何想法请...!
假设这是一个控制台应用程序,您可以打印新行大约 24 次,这使您处于底部。
要打印的字符串存储在 81 个字符的固定大小数组/向量中(\0 在位置 81 处终止),并由某些馈送例程更新。这可能来自套接字、打字、文件、调用进程等......
在馈送时间(计时器回调、文件更改时、套接字缓冲区不为空等),您需要一次旋转文本一个字符。假设旋转是从右到左,将从 1(不是 0)到 80 的所有字符复制到 i-1 前面的位置。将新字符写入位置 80。
这里关键的图形技巧是用 \r 而不是 \n 终止 printf。\r 是回车修饰符:光标返回到第 0 列,并且不会转到下一行。这允许重新打印同一行。