#include<stdio.h>
int main() {
//system("cls");
char randomStr[] = "0123456789";
printf("\n\n\n\n\t\t\t\t\t");
while(!kbhit()) {
int i;
for(i = 0;i < 10;i++) {
printf("%c", randomStr[i]++);
while(randomStr[i] == '\n' || randomStr[i] == '\r' || randomStr[i] == '\t' ||
randomStr[i] == '\b' || randomStr[i] == '\0' || randomStr[i] == '\a' ||
randomStr[i] == '\v' || randomStr[i] == '\f') {
randomStr[i]++;
}
}
printf("\b\b\b\b\b\b\b\b\b\b");
}
return 0;
}
我希望光标向右移动并开始打印字符,然后覆盖自身,这会产生一种滚动效果(就像在彩票机中一样)。这可以在不使用system("cls")
的情况下正常工作,但如果我使用system("cls")
,则光标会被拉回到行的开头。下图:
没有system("cls")
它工作正常(图像中的字符是随机的,在程序运行时的实例中)
添加system("cls")
后会发生这种情况(突出显示的区域是我预期效果发生的地方)
答案 0 :(得分:1)
system("cls")
是一个系统调用,用于清除相关控制台上的屏幕。它的行为与在Windows命令行中用作cls
的行为相同(尝试一下)。因此,这将清除屏幕上所有当前的字符,而没有&#34;滚动效果&#34;你正在寻找。
答案 1 :(得分:0)
system()命令是OS和&#34; cls&#34;的命令。是你传递的参数。 cls是清除屏幕的命令。在一些OS cls参数不是清除屏幕的命令,我不确定,但我认为在Unix中它不起作用。
至于为什么当你调用它而不是调用它时它的行为有所不同 - 我需要更多的信息,因为它取决于很多因素并且提供的代码不足以清除它。我想看看是什么你在打电话给系统之前做的事情(&#34; cls&#34;);