Как напечатать некоторую информацию в терминале во время работы программы на основе graphics.h? - PullRequest
0 голосов
/ 03 февраля 2019

Это мой первый вопрос в StackOverflow, так что прости меня за мои ошибки в задании вопроса, если таковые имеются.Я пытаюсь научиться использовать библиотеку graphics.h на языке программирования C как часть учебной программы курса, и у меня возникают проблемы с выводом некоторой информации на терминал в linux при использовании libgraph.Функция 'printf ()' печатает заданную информацию в окне libgraph вместо терминала, тогда как я хочу, чтобы она выводила информацию на терминал linux.Вот мой код и снимок экрана с выводом этого кода. Снимок экрана: - Скриншот алгоритма DDA для проблемы printf

#include<stdio.h> 
#include<graphics.h> 

//Function for finding absolute value 
int abs (int n) 
{ 
    return ( (n>0) ? n : ( n * (-1))); 
} 

//DDA Function for line generation 
void DDA(int X0, int Y0, int X1, int Y1) 
{ 
    // calculate dx & dy 
    int dx = X1 - X0; 
    int dy = Y1 - Y0; 

    // calculate steps required for generating pixels 
    int steps = abs(dx) > abs(dy) ? abs(dx) : abs(dy); 

    // calculate increment in x & y for each steps 
    float Xinc = dx / (float) steps; 
    float Yinc = dy / (float) steps; 

    // Put pixel for each step 
    float X = X0; 
    float Y = Y0; 
    for (int i = 0; i <= steps; i++) 
    { 
    printf("(%f,%f)",X,Y);
        putpixel (X,Y,RED);  // put pixel at (X,Y) 
        X += Xinc;           // increment in x at each step 
        Y += Yinc;           // increment in y at each step 
        delay(100);          // for visualization of line- 
                             // generation step by step 
    } 
} 

// Driver program 
int main() 
{ 
    int gd = DETECT, gm; 

    // Initialize graphics function 
    initgraph (&gd, &gm, "");    

    int X0 = 2, Y0 = 2, X1 = 14, Y1 = 16; 
    DDA(2, 2, 100, 100); 
    getch();
    return 0; 
}  

Мне нужно, чтобы printf печатал в терминале linux вместоокно libgraph.

1 Ответ

0 голосов
/ 05 февраля 2019

Некоторые, если не все реализации libgraph имеют эту строку в одном из заголовочных файлов:

#define printf grprintf

Таким образом, они переопределяют printf с помощью макроса, и вы можетеНе используйте его для печати в терминале Linux .Но поскольку они не переопределяют другие функции вывода, вы можете использовать, например,

    fprintf(stdout, "(%f,%f)", X, Y), fflush(stdout);    // or stderr instead of stdout

или puts для константных строк.

Или, что еще проще, вы можете #undef printf после#include<graphics.h> чтобы вернуть нормальное поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...