2008-09-11 133 views
2

我有一個小程序,它運行在Linux和Windows下,用C編寫,並在控制檯上顯示輸出。我沒有以任何形式的詛咒或類似的東西進行鏈接。重置屏幕指向Windows和Linux控制檯中屏幕的頂部

目前我使用清除

#ifdef __WIN32 
    system("cls"); 
#else 
    system("clear"); 
#endif 

屏幕然後我有一堆printf語句的更新狀態。我想將屏幕指針重置爲0,0,然後我可以覆蓋我的printfs。我寧願避免編譯更多的擴展,特別是因爲我編寫了2個不同的操作系統。

回答

0

看起來我可能已經找到了窗口做的具體方式,SetConsoleCursorPosition

ANSI轉義序列\ 033 [0; 0H爲Linux - 只是那的printf到控制檯。

+1

對於Linux,不保證ansi轉義,但使用不同終端類型的機會不大。您可能想要驗證Termcap或Terminfo中的功能。 – 2009-01-08 05:59:55

1

對於類Unix平臺,通常的做法是使用curses庫。

0

是的,對於unix平臺,curses(或ncurses,這些天)是要走的路。有些版本可以在Windows下工作,所以你可以在兩個系統上以同樣的方式進行操作。

0

對於windows - 您可以使用ANSI轉義字符。

http://www.lexipixel.com/news/star_dot_star/using_ansi_escape_sequences.htm

http://www.robvanderwoude.com/ansi.html

printf "\x[0;0H" 

它曾經是ANSI.SYS需要,你可以做到這一點之前加載,但它是值得一試。

有關添加ANSI支持的說明 http://www.windowsnetworking.com/kbase/WindowsTips/WindowsXP/UserTips/CommandPrompt/CommandInterpreterAnsiSupport.html 注意:Ansi.sys只能在command.com下運行。您不能在cmd.exe中使用它