我刚刚搬到Linux上一个月了。我使用Borland Turbo C进行C编程,但其中一些函数在GNU / Linux中不起作用,所以寻求帮助。
这些是我想要替换的一些功能:
- gotoxy
- cprintf
- clrscr
- initgraph / graphics.h
我很感激一些代码示例,展示如何使用任何替换。
答案 0 :(得分:6)
在linux中,您可以使用ncurses库将终端用作文本缓冲区:移动光标并写入文本。它还可以绘制窗口和其他高级小部件。
对于gotoxy
,请参阅ncurses(link)中的move
和wmove
。
对于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类似的体验,那么您可能正在寻找directfb或svgalib。 如果您想在窗口中渲染图形,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++
关于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);
}
简单的方法!