是否可以在包含变量的 Linux 操作系统上打印出(在 C 中)一行文本到控制台,以便当变量更改时,它会更改打印的行而不是打印新行?例如,如果我有以下 C 代码:
void main()
{
int i;
for(i=1;i<=10;i++){
printf("%d\n",i);
sleep(5);
}
}
照原样,这将打印十行。但我想打印一行,它会自行更新以显示 i
更改时的值。
最佳答案
在 Linux 上,void main(void)
是未定义的行为;返回类型是 int
— 无一异常(exception)。在 Windows 上,规则不同;在 Unix 上,它们很简单——main()
返回 int
!
使用'\r'
回车和fflush()
:
#include <stdio.h>
int main(void)
{
int i;
for (i = 1; i <= 10; i++)
{
printf("\r%d", i);
fflush(stdout);
sleep(5);
}
putchar('\n');
return 0;
}
除非您的显示需要变得更复杂,否则无需使用 curses
库。
注意:如果您正在倒计时(或当前输出行的长度因任何原因减少),您需要确保在之前显示的数据上写入空白。因此,举例来说,您可能需要格式字符串 "\r%-4d"
来从 9999 计数到 0 而不会在显示上留下不需要的数字。
关于c - 向标准输出显示单行以更新部分而不是在 C 中打印新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831939/