Re: [問題] 美國標準控制序列指令
※ 引述《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
推
03/16 23:06, , 1F
03/16 23:06, 1F
推
03/16 23:11, , 2F
03/16 23:11, 2F
→
03/16 23:18, , 3F
03/16 23:18, 3F
推
03/16 23:34, , 4F
03/16 23:34, 4F
推
03/16 23:49, , 5F
03/16 23:49, 5F
推
03/17 00:19, , 6F
03/17 00:19, 6F
推
03/17 12:55, , 7F
03/17 12:55, 7F
討論串 (同標題文章)