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

Posted

技术标签:

【中文标题】Turbo C 函数 `clrscr` 和 `cprintf` 的 GNU/Linux 替代品【英文标题】:GNU/Linux replacements for Turbo C functions `clrscr` and `cprintf` 【发布时间】:2011-08-16 14:36:31 【问题描述】:

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

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

我希望能提供一些代码示例来展示如何使用任何替换。

【问题讨论】:

另外,那是一个古老的编译器。有很多现代替代品更好,更符合标准。 【参考方案1】:

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

对于gotoxy,请参阅来自 ncurses (link) 的 movewmove。 对于cprintf,请参阅printw。 只需clear()即可清屏。

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

示例程序,它使用了 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 类似的体验,您可能正在寻找directfb 或svgalib。 如果你想在窗口中渲染图形,SDL 会很有帮助。

【讨论】:

对于 clrscrcprintf 的一些代码将不胜感激 我用 clrscrcprintfgotoxy 的 ncurses 版本编辑了答案。【参考方案2】:

您引用的函数是 Borland 的控制台应用程序专有库的一部分。你想了解ncurses。

【讨论】:

clrscrcprintf 的一些代码将不胜感激!【参考方案3】:

关于图形.h

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

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

关于清屏

为此,您有很多选择。 一个是, 使用 system("clear") 但它需要 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 我想你可能已经知道了。您可以在 stdio.h 中使用 getchar(),而不是 conio.h 中的 getch()(不是 ansi 标准)。

【讨论】:

【参考方案4】:

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

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);

简单的方法!

【讨论】:

以上是关于Turbo C 函数 `clrscr` 和 `cprintf` 的 GNU/Linux 替代品的主要内容,如果未能解决你的问题,请参考以下文章

用Turbo C 2.0写五子棋小游戏

c语言清屏函数都有哪些?

如何使用 gotoxy 函数而不是 clrscr

libjpeg turbo tjCompressFromYUV

在Turbo C ++程序中编译c-graphics时出错

pascal中,"clrscr""forward""halt"分别是啥含义?