2017-07-09 31 views
1

我一直在尋找的gotoxy用於開發的C++ v5.11(gcc編譯器)的替代品,並發現這一點:gotoxy()函數的替代品開發的C不工作

void gotoxy(int x,int y) { 
    printf("%c[%d;%df", 0x1b, y, x); 
} 

在此之後,當我試圖把這種功能如下:在按預期

int main() { 
    gotoxy(20, 10); 
    printf("Hello"); 
    return 0; 
} 

輸出不:

<-[10;20fHello 

此印刷在屏幕的最左上角(即1,1) 而不是(20,10)。

請給我建議,我可以在我的代碼中使用gotoxy

+3

這看起來像一個ANSI轉義序列。我不認爲Windows控制檯支持這些。 – melpomene

+0

你可以使用[這個開源的CONIO實現MinGW/Dev-C++](http://conio.sourceforge.net/)。安裝Devpak後,需要配置編譯器路徑以指向Dev-C++安裝目錄中的'include'和'lib'目錄(例如'C:\ Program Files(x86)\ Dev-C++ 5.11 \ include'用於頭文件和'C:\ Program Files(x86)\ Dev-C++ 5.11 \ lib' for libs)。那麼你需要確保你鏈接的lib。 64位構建需要'-lconio_64'或'-lconio_unicode_64',具體取決於你是否定義了「#define UNICODE」。 32位只是刪除'_64'。然後只需要#include '。 –

+0

使用Wayback對[SetConsoleMode的文檔](https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v = vs.85).aspx)的更新進行了一點挖掘之後機器,Windows 10 Anniversary Update增加了對控制檯輸出的一些VT100支持,看起來2017年春季的Creators Update增加了更多的支持,包括輸入。有關如何使用它們的更多信息,請參閱[控制檯虛擬終端序列](https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v = vs.85).aspx)如何啓用這些功能。不確定它會在Win8.1或更高版本上工作:( –

回答

4

您的ANSI轉義序列不正確,應該是\033[%d;%dH,但看起來您的終端根本不支持ANSI VT100轉義序列。在Windows中,可能會有一個配置設置來啓用它,VT100仿真在大多數現代操作系統終端(unix,linux,BSD,OS/X ...)中都是標準的。

下面是修改代碼:

#include <stdio.h> 

void gotoxy(int x, int y) { 
    printf("\033[%d;%dH", y, x); 
} 

int main(void) { 
    gotoxy(20, 10); 
    printf("Hello\n"); 
    return 0; 
} 
+0

@JaladhSinghal:你可以接受其中一個答案通過點擊其分數下方的灰色複選標記。 – chqrlie