看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《tropical72 (藍影)》之銘言: : 問題(Question): : 因緣際會下上網到子由老師之網站, : http://www.math.ncu.edu.tw/~ziyou/c++/ : 發現了一段有趣的碼, : 截取後簡單的表示 : void cls() : { : printf("\x1b[2J"); : // cout << "\x1b[2J"); : } : 該網站提到 esc [ 2 J --> 清除螢幕且游標回歸左上角 : 不過遺憾的是這段碼在我手邊compiler (dev-c 4.9.9.2, vc6.0, vc2008, vc2010) : 無法正常執行(只會出現一些亂碼),後來又上 wiki 翻了翻 : http://zh.wikipedia.org/zh-tw/%E6%8E%A7%E5%88%B6%E5%AD%97%E7%AC%A6 : 不過實在是無法和 C 之跳脫字元做連想,因看該文之說明還蠻引起興趣研究, : 其中包含了 : 1. 游標上下移 n 列 : 2. 游標左右移 n 列 : 這些我只會用 windows.h - SetCursorPos API 去控制 : 想請教各位版友是否真可藉由 C/C++ 跳脫字元控制 console 之游標定位? : 謝謝各位 !! 回推文的問題 在新版 Windows 用 ANSI escape Sequence 比較麻煩,也許裝 cygwin 或用 Virutal PC 裝個 DOS 都比較快。 以下我是用 Windows XP,更新版 Windows 未測 首先當然就是編輯 C:\WINDOWS\system32\CONFIG.NT 加入這行 device=%SystemRoot%\system32\ansi.sys 不用重開機,稍後就會自動載入此 driver 了 (ansi.sys 電腦裡面本來就有) 然後呢,好像從 Windows 2000 開始,命令提示字元 (Windows 的 DOS 視窗) 就從 以前的 command.com 變成新的 cmd.exe,不過 command.com 還是保留了,其位置在 C:\WINDOWS\system32\command.com 而這 cmd.exe 功能變強了,但不能載入 ansi.sys,所以這裡要改用 command.com。 先在桌面上按右鍵新增捷徑,目標位置就打 command.com 就會建立一個 *.pif 這 pif 就是一個設定檔,按右鍵可以設定一下,總之他會是一個比 cmd.exe 更好的 DOS 模擬器,如果有以前 DOS 時代的 16 位元遊戲或程式不能用 cmd.exe 跑就都可 以用這個來試試。 更多 pif :http://blogs.msdn.com/oldnewthing/archive/2009/11/12/9921112.aspx 然後寫個 c 程式碼,比如叫 aa.c 內容如下 #include <stdio.h> int main() { puts("\x1b[41mred background\x1b[m"); /* \x1b 就是 escape 的 ASCII */ return 0; } 不能用 VC 的 cl.exe 或 gcc 來編譯,原因我不知道,反正需要編譯成 16 位元執行檔 到這個網站: http://www2.ee.ntu.edu.tw/~jye/c/c134/compiler.html 抓裡面的 Turbo C http://www2.ee.ntu.edu.tw/~jye/c/tc/tc201.exe 解壓縮後,執行剛建立的 pif,跳到 C:\TC201 資料夾 輸入 tc aa.c 就會進入 Turbo C 的整合介面,進入就按 F9 就會編譯、連結出 aa.exe 再按 Alt+F -> Exit 離開,回到 DOS 模擬器再執行 aa 就成功印出紅底白字了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.130.119
loveme00835:好麻煩 ~"~ 03/16 23:06
ericinttu:祕技推一下 03/16 23:11
Bencrie:TC都跑出來了 orz 03/16 23:18
tropical72:p大太神了,感謝指導,大推 !! 03/16 23:34
yauhh:時代的眼淚! 03/16 23:49
VictorTom:推:D 03/17 00:19
xatier:P大好強! 03/17 12:55