2011-08-24 103 views
5

gotoxy()我使用GCCUbuntu的。所以,我編譯和終端執行。但是在網絡編程比賽中,他們需要輸出如圖所示。我怎麼能實現GCC

required output

對於這一點,如果我使用TURBOC我把它用CONIO.H使用gotoxy()得到輸出的螺旋格式可以得到。 但在Ubuntu中,我怎麼能做到這一點?

+3

我想你應該提前計算的時間,其中每個數字熄滅(數字的,即順序,由左到右,上到-bottom和之間的空格數量),然後輸出所有文本。如果只是一個問題:「去屏幕上的這個位置寫下數字,它不會是一個有趣的問題;編程競賽基本上是關於設計而不是實現。 –

回答

4

使用ncurses庫。

下面是一個例子,改編自http://www.paulgriffiths.net/program/c/srcs/curhellosrc.html

#include <stdlib.h> 
#include <stdio.h> 
#include <curses.h> 

int main(void) { 
    WINDOW * mainwin; 

    /* Initialize ncurses */ 

    if ((mainwin = initscr()) == NULL) { 
     fprintf(stderr, "Error initialising ncurses.\n"); 
     exit(EXIT_FAILURE); 
    } 

    move(10, 15); 
    addch('X'); 
    refresh(); 

    getch(); 

    delwin(mainwin); 
    endwin(); 
    refresh(); 

    return EXIT_SUCCESS; 
} 

的更多信息,請訪問:http://invisible-island.net/ncurses/ncurses-intro.html#stdscr

1

拋開ANSI escape sequences您可能希望調查的ncurses:

http://www.gnu.org/s/ncurses/

這一切最終取決於運行程序,而不是實際的主機,語言或庫中的終端的功能。考慮將程序輸出重定向到文件或打印機會發生什麼情況。

conio.h API更像是一個固定的控制檯,有了Unix系統,你通常會處理更多不同的終端,比如可調整大小的X-Terminals。

1

確定有多少行輸出需要。爲需要的每行輸出分配一個「char *」數組。當你放置一個數字時,使用「realloc()」來增加線條的大小,並用空格填充從舊的一端到新的一端(如果需要的話)。然後把你的號碼放在該行的正確位置(在內存中)。

在內存中構建了一個字符串數組後;做一個for循環,打印每一行(並釋放你分配的內存)。

你不需要「gotoxy()」或任何東西來控制光標位置。

5

假設因爲它是一個比賽,他們不想像ncurses這樣的依賴項,你可以嘗試在內存中執行它。

設置char - 行和列的二維數組 - 例如24x80。編寫你自己的gotoxy()版本,它將值賦給正確的單元格。完成繪圖後,打印出行數組。