Turbo C的GNU / Linux替换函数`clrscr`和`cprintf`

时间:2011-08-16 14:36:32

标签: c linux gcc ncurses

我刚刚搬到Linux上一个月了。我使用Borland Turbo C进行C编程,但其中一些函数在GNU / Linux中不起作用,所以寻求帮助。

这些是我想要替换的一些功能:
  - gotoxy
  - cprintf
  - clrscr
  - initgraph / graphics.h

我很感激一些代码示例,展示如何使用任何替换。

4 个答案:

答案 0 :(得分:6)

在linux中,您可以使用ncurses库将终端用作文本缓冲区:移动光标并写入文本。它还可以绘制窗口和其他高级小部件。

对于gotoxy,请参阅ncurses(link)中的movewmove。 对于cprintf,请参阅printw。 您只需使用clear()清除屏幕。

在ncurses中,您还需要在refresh()printw之后使用clear()刷新屏幕。

示例程序,它使用ncurses中提到的所有函数:

#include <curses.h>

int main(int argc, char *argv[])
{
    initscr();
    clear();
    move(15, 20);
    printw("Test program: %s", argv[0]);
    refresh();
    getch();
    endwin();
    return 0;
}

使用以下代码编译gcc:gcc program.c -lcurses

对于图形,您必须选择特定的库。 如果您需要与低级graphics.h类似的体验,那么您可能正在寻找directfbsvgalib。 如果您想在窗口中渲染图形,SDL会有所帮助。

答案 1 :(得分:5)

您所参考的功能是Borland专用控制台应用程序库的一部分。您想了解ncurses

答案 2 :(得分:0)

关于graphics.h

关于在Linux中使用graphics.h是一件容易的事。一周前我遇到了同样的问题。那么你可以用搜索词“Linux中的graphics.h”来调整,你会得到很多链接,这里就是一个。

http://www.rajivnair.in/2007/07/graphicsh-in-gnulinux.html

关于清除屏幕

为此,你有很多选择。 一个是, 使用系统(“清除”)但它需要stdlib.h并且性能较慢。 这里有两个链接......

How do I clear the console in BOTH Windows and Linux using C++

cprogramming.com

关于gotoxy  正如MichałTrybus的回答中提到的那样。

关于cprintf

我提到了许多链接,但没有得到简单的答案。我也在等待这个问题的答案   但是,根据我的经验,每当我想要输出为某种彩色格式时,我会使用graphics.h,虽然它不是必需的。这就是为什么我以前没有在脑海里有过这个问题。 您可能会发现此链接很有用...... codeguru.com

关于getch   我想你可能已经知道了这一点。而不是conio.h中的getch()(不是ansi标准),你可以在stdio.h中使用getchar()。

答案 3 :(得分:0)

刚才,我在另一个帖子中回答了同样的问题:

void gotoxy(int x, int y) {
  printf("%c[%d;%df",0x1B, y, x);
}

void clrscr(void) {
  fprintf(stdout, "\033[2J\033[0;0f");
  fflush(stdout);
}

void textcolor(int attr, int fg, int bg) {   
  printf("%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
}

简单的方法!