如何在unix上的C中以图形方式打印到控制台

时间:2011-02-22 03:27:41

标签: c unix printing

所以我熟悉printf之类的东西,但是我需要在屏幕上更新一行,而不需要多行滚动。我发现库在windows(conio.h)中执行此操作但在unix中没有。我需要能够在cygwin中运行它,但欢迎任何unix示例。

我找到了以下stackoverflow article ,但我不认为这完全符合我的需求。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

你想要Ncurses。它是一个允许您编辑屏幕上任何字符的库。

答案 1 :(得分:0)

这取决于您是否尝试使用文本模式全屏应用程序(在这种情况下,ncurses可能是您想要的)或者只是想要就地更新单行(例如,您想要更新一个“X%完成”指标从1到100,所有输出出现在同一行,因此当打印X%完成时,它会打印“超过”之前的X-1%完成指示符)。在后一种情况下,您可以编写相对便携的代码,并且相当简单。例如,像这样:

#include <windows.h>    // Used only for "Sleep" in our simulated work load
#include <stdio.h>

void do_work() {
    // Simulated work load. Just waste some time:
    Sleep(100);
}

int main() {
    for (int i=0; i<100; i++) {
        char buffer[82];
        sprintf(buffer, "%d percent done", i+1);
        printf("\r%-79s", buffer);
        do_work();
    }
    return 0;
}