运行 基于 graphics.h 的 C 程序如何在终端中打印一些信息?

How to print some information in the terminal while running a graphics.h based C program?

这是我在 Whosebug 中的第一个问题,请原谅我在提问时的错误。我正在尝试学习使用 C 编程语言中的 graphics.h 库作为课程的一部分,但我在使用 libgraph 时无法将一些信息打印到 Linux 中的终端。 printf() 函数在 libgraph window 而不是终端中打印给定信息,而我希望它将信息打印到 Linux 终端。这是我的代码和此代码屏幕截图的输出屏幕截图:

printf问题的DDA算法截图:

#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 window 中打印。

libgraph 的某些(如果不是全部)实现在其中一个头文件中包含此行:

#define printf grprintf

所以,他们用宏重新定义了printf,你不能用它在linux终端打印。但是因为他们没有重新定义其他输出函数,所以你可以使用 e. g.

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

puts 常量字符串。

或者,更简单的是,您可以在 #include<graphics.h> 之后 #undef printf 恢复正常行为。