gpt4 book ai didi

c - 向标准输出显示单行以更新部分而不是在 C 中打印新行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:11 24 4
gpt4 key购买 nike

是否可以在包含变量的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com