Замена GNU / Linux для функций Turbo C `clrscr` и` cprintf` - PullRequest
2 голосов
/ 16 августа 2011

Я только что перешел на Linux всего на месяц. Я использовал Borland Turbo C для программирования на C, но некоторые из этих функций не работают в GNU / Linux, поэтому обращаюсь за помощью.

Вот некоторые функции, которые я хотел бы заменить:
- готокси
- cprintf
- clrscr
- initgraph / graphics.h

Буду признателен за примеры кода, показывающие, как использовать любые замены.

Ответы [ 4 ]

6 голосов
/ 16 августа 2011

В linux вы можете использовать библиотеку ncurses, чтобы использовать терминал в качестве текстового буфера: перемещать курсор и писать текст.Он также может рисовать окна и другие виджеты высокого уровня.

Для gotoxy см. move и wmove из ncurses ( ссылка ).Для 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 .

5 голосов
/ 16 августа 2011

Функции, на которые вы ссылаетесь, являются частью проприетарной библиотеки Borland для консольных приложений.Вы хотите прочитать о ncurses .

0 голосов
/ 10 января 2017

Просто я отвечал на те же вопросы в другой ветке:

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

Простой способ сделать это!

0 голосов
/ 30 августа 2011

О graphics.h

Что касается использования graphics.h в Linux, это простая задача.У меня была такая же проблема неделю назад.Ну, вы можете поглядеть на поисковый термин "graphics.h в Linux", и вы получите много ссылок, и вот одна из них.

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

О Clear Screen

Для этого у вас есть много вариантов.И один из них - использование system («clear»), но для этого нужен stdlib.h, и он работает медленнее.Вот две ссылки для вас ...

Как очистить консоль в ОБА Windows и Linux, используя C ++

cprogramming.com

О готокси Как уже упоминалось в ответе Михаила Трибуса.

О cprintf

Я ссылался на множество ссылок, но не получил простых ответов.Я тоже жду ответов для этого.
Но, по моему опыту, всякий раз, когда я хочу, чтобы вывод был в каком-то цветном формате, я буду использовать graphics.h, хотя это и не требуется. Вот почему у меня этого не быловопрос в моей голове когда-либо прежде.Вы можете найти эту ссылку полезной ... codeguru.com

О getch Я думаю, вы, возможно, уже знаете об этом.Вместо getch () в conio.h (не в стандарте ANSI) вы можете использовать getchar () в stdio.h.

...