No.485
ダンプ表示のライブラリは出来ました。何の変哲もない16進数のカラム表示です。
データ配列のポインタ、表示データ数、列数、行数、最上行値のポインタなどを引数にして関数を呼ぶと表示します。
地味ですが、こういったライブラリがあると開発の効率が良くなるのでは?という想いで作ってみました。後でDMXデータを表示する画面を作る際にも同様のことをするので習作でもあります。
以下オレメモです。
ANSIエスケープシーケンスにおいてパラメータに変数を用いたい場合。
// カーソルをx=10,y=5にして文字列を表示する
#define ESC 0x1B
int main(void) {
int x = 10 ;
int y = 5 ;
printf("%c[%d:%dHカーソルを指定の位置に", ESC, x, y ) ;
return 0 ;
}
※ このブログシステムでは#や[が機能文字扱いなので、上記ではこれらを全角文字で書いています。
などとします。大昔のN-BASICの「LOCATE + PRINT」みたいなことをしています。
printfの文字列中のエスケープを\eと直で書くと後に続く%dが機能しませんが、#defineで定義したESC(0x1B)を%cで読み込めば機能します。
もちろん、printfのESCの位置に0x1Bと直書きしてもいいのですが、#defineした方が読みやすいと思います。
C言語ではこういった不思議な記述が多いです。正規表現的でもありますが、バイナリ的な指向が各所に出てきます。
アセンブラに慣れた身に違和感はありませんが、理解に苦しむ要素かもしれません。
#C言語
データ配列のポインタ、表示データ数、列数、行数、最上行値のポインタなどを引数にして関数を呼ぶと表示します。
地味ですが、こういったライブラリがあると開発の効率が良くなるのでは?という想いで作ってみました。後でDMXデータを表示する画面を作る際にも同様のことをするので習作でもあります。
以下オレメモです。
ANSIエスケープシーケンスにおいてパラメータに変数を用いたい場合。
// カーソルをx=10,y=5にして文字列を表示する
#define ESC 0x1B
int main(void) {
int x = 10 ;
int y = 5 ;
printf("%c[%d:%dHカーソルを指定の位置に", ESC, x, y ) ;
return 0 ;
}
※ このブログシステムでは#や[が機能文字扱いなので、上記ではこれらを全角文字で書いています。
などとします。大昔のN-BASICの「LOCATE + PRINT」みたいなことをしています。
printfの文字列中のエスケープを\eと直で書くと後に続く%dが機能しませんが、#defineで定義したESC(0x1B)を%cで読み込めば機能します。
もちろん、printfのESCの位置に0x1Bと直書きしてもいいのですが、#defineした方が読みやすいと思います。
C言語ではこういった不思議な記述が多いです。正規表現的でもありますが、バイナリ的な指向が各所に出てきます。
アセンブラに慣れた身に違和感はありませんが、理解に苦しむ要素かもしれません。
#C言語