• ベストアンサー

文字を動かしたい

コンソールで文字を上下や左右に動かすことは出来るのでしょうか? 例えばaという文字を左から右へ動かす。 出来るのでしたらどのようにすればいいのか教えて下さい。 使用しているOSはRedHatLinux7.3です。

質問者が選んだベストアンサー

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.2

(bs) は16進数で0x08 --> \x08 (sp) は空白なので普通に半角" "を入れればいいでしょう。 printf("a"); printf("\x08"); printf(" a"); printf("\x08\x08"); printf(" a"); printf("\x08\x08\x08"); printf(" a"); ですが、この間に時間待ちのルーチンを入れないとあっという間に動いていってしまいます。 時間待ちを割り込みで作るのかctimeを引くのかはお任せします。

nikeneko
質問者

お礼

詳しい説明ありがとうございました。

その他の回答 (1)

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

CUIが中心の時代にはコンソールにコントロールコードやESCシーケンスを送り、文字を動かしていました。 printfでコントロールコードを出力してカーソルの動きを調べてください。文字を右へ動かすということは a (bs) (sp)a (bs)(bs) (sp)(sp)a (bs)(bs)(bs) (sp)(sp)(sp)a という具合に改行せずにカーソルを移動させる方法で実現します。ESC やCSIのシーケンスをうまく使えばもっと短いコードでいろいろなことができますが、コンソールの設定に依存するので試してみてから考えてください。

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man4/console_codes.4.html
nikeneko
質問者

お礼

ありがとうございました。

nikeneko
質問者

補足

すみません。初心者でよく分からないのですがprintfを使って printf("a"); printf("(bs)"); printf("(sp)a"); printf("(bs)(bs)"); printf("(sp)(sp)a"); printf("(bs)(bs)(bs)"); printf("(sp)(sp)(sp)a"); と、すればよいのですか?

関連するQ&A