Замены GNU / Linux для функций Turbo C `clrscr` и` cprintf`

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

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

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


person Sourav    schedule 16.08.2011    source источник
comment
Кроме того, это древний компилятор. Есть много современных альтернатив, которые лучше и больше соответствуют стандартам.   -  person Joe    schedule 16.08.2011


Ответы (4)


В 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.

person Michał Trybus    schedule 16.08.2011
comment
небольшой код будет признателен для clrscr и cprintf - person Sourav; 16.08.2011
comment
Я редактировал ответ с помощью ncurses версий clrscr, cprintf и gotoxy. - person Michał Trybus; 16.08.2011

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

person Konrads    schedule 16.08.2011
comment
небольшой код будет признателен для clrscr и cprintf! - person Sourav; 16.08.2011

О graphics.h

Использование graphics.h в Linux - простая задача. Неделю назад у меня была такая же проблема. Вы можете поглядеть на поисковый запрос «graphics.h в Linux», и вы получите много ссылок, и вот одна.

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

Об очистке экрана

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

Как очистить консоль в ОБЕИХ ОС Windows и Linux с использованием C ++

cprogramming.com

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

О cprintf

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

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

person Muthu Ganapathy Nathan    schedule 30.08.2011

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

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

Легкий способ сделать это!

person omotto    schedule 10.01.2017