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

发布于 2024-11-29 14:01:38 字数 204 浏览 2 评论 0 原文

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

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

我希望有一些代码示例展示如何使用任何替换。

I just moved to Linux for just a month. I've used Borland Turbo C for C programming but some of these functions do not work in GNU/Linux, so looking for help.

These are some of the functions I would like to replace:
- gotoxy
- cprintf
- clrscr
- initgraph/graphics.h

I would appreciate some code examples showing how to use any replacements.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

偷得浮生 2024-12-06 14:01:38

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

对于 gotoxy,请参阅 ncurses 中的 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 类似的体验,您可能正在寻找 directfbsvgalib
如果您想在窗口中渲染图形,SDL 将很有帮助。

In linux, you can use the ncurses library to use the terminal as a text buffer: move the cursor around, and write text. It can also draw windows and other hi-level widgets.

For gotoxy see move and wmove from ncurses (link).
For cprintf see printw.
You can clear the screen simply with clear().

In ncurses you also need to refresh the screen with refresh() after printw and clear().

Example program, which uses all the mentioned functions in 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;
}

Compile in gcc with: gcc program.c -lcurses

As for graphics, you have to choose a particular library.
If you need a similar experience as the low-level graphics.h, you are probably looking for directfb or svgalib.
If you want to render graphics in a window, SDL will be helpful.

风追烟花雨 2024-12-06 14:01:38

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

The functions you refer to are part of Borland's proprietary library for console applications. You want to read about ncurses.

_蜘蛛 2024-12-06 14:01:38

关于graphics.h

关于在Linux 中使用graphics.h 是一项简单的任务。一周前我也遇到了同样的问题。那么你可以用搜索词“graphics.h in Linux”进行搜索,你会得到很多链接,这里是一个。

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

关于清屏

为此,您有很多选择。
其一是,
使用 system("clear") 但它需要 stdlib.h 并且性能较慢。
这里有两个链接...

如何使用 C++ 清除 Windows 和 Linux 中的控制台

cprogramming.com

关于 Gotoxy
正如 Michał Trybus 的回答中提到的。

关于cprintf

我引用了很多链接,但没有得到简单的答案。我也在等待这个问题的答案。
但是,根据我的经验,每当我希望输出采用某种彩色格式时,我都会使用graphics.h,尽管这不是必需的。这就是为什么我以前从未想过这个问题。
您可能会发现此链接很有用...
codeguru.com

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

About graphics.h

Regarding using graphics.h in Linux is an easy task. I had the same problem a week ago. Well you can goggle with search term "graphics.h in Linux", and you will get many links and here is one.

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

About Clear Screen

For that, you have many options.
And the one is,
using system("clear") but it needs stdlib.h and it is slower in performance.
Here two links for you...

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

cprogramming.com

About gotoxy
As mentioned in Michał Trybus's Answer.

About cprintf

I Referred many links, but not getting the simple answers. Me too waiting for the answers for this.
But,In my experience whenever I want the output to be in some colored format , I will use graphics.h, though it is not required.That's why I doesn't had this question in my mind ever before.
You may find this link useful...
codeguru.com

About getch
I think you may already know about this. Instead of getch() in conio.h(not in ansi standard), you can use getchar() in stdio.h.

不回头走下去 2024-12-06 14:01:38

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

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

简单的方法!

Just, I was answering the same questions in another thread:

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

Easy way to do it!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文