c-关于打印的问题:显示反映变化的值



我对在C上打印有一些问题。这是我的代码。

while(1)
{
if(Button == 32)
{
break;
}
else
{
if(Button == 1)
count += 1;
if(btn_value == 2)
count -= 1;
if(btn_value == 4)
count = 0;
printf("%dr", count);
fflush(stdout);
}
}

for (int i=count;i>=0 ; i--)
{
printf ("YOUR TIME : %02dr", i);
fflush(stdout);
sleep(1);
}

这是我的主要代码的一部分。我设计的是接收按钮输入并相应地更改计数的值。我想做的是在一行中显示count的值,该值连续反映count的变化。

我的意思是,如果目前的情况是

结果窗口

2

如果我给Button=1,我希望结果是

结果窗口

3

不是

结果窗口

2
3

所以我找到了一些代码来做这件事,但当计数超过10并返回到一位数(0~9(时,结果显示

10到90,而不是09。也不是08而是80。我该如何处理?

您可以用空格覆盖剩余部分,如下所示:

printf("YOUR TIME : %d r", i);

你看到%dr之间的空格字符了吗?

一些注意事项:

  • 您已经有了%02d,但这与您对错误输出的描述不匹配
  • 我会把r放在格式字符串的开头,因为它对我来说似乎更合乎逻辑
  • 如果循环结束后,输出将被另一个文本覆盖,我会将r保留在现在的位置,并将printf("FINISHED n");puts("FINISHED ");保留足够的空间

如果输出终端支持它们,则可以使用此处所示的ANSI转义序列。例如:

  • 要从光标位置删除行:ESC[K
  • 要使光标向后移动N列:ESC[ND

下面是一个小示例程序,每隔几秒钟在同一位置显示一个从0到19的计数器:

#include <stdio.h>
#include <unistd.h>
int main(void)
{
int count = 0;
do {
printf("%d", count);
fflush(stdout);
sleep(1);
count = (count + 1) % 20;
// Go 2 columns backward + Erase the line
// (033 is the octal ASCII code of ESC)
printf("33[%dD33[K", 2);

} while(1);
return 0;
}

相关内容

  • 没有找到相关文章

最新更新