LoginSignup
7
11

More than 1 year has passed since last update.

【C言語】エスケープシーケンス チートシート

Last updated at Posted at 2021-08-18

エスケープシーケンスとは

エスケープシーケンス (escape sequence) とは、コンピュータシステムにおいて、通常の文字列では表せない特殊な文字や機能を、規定された特別な文字の並びにより表したもの。

例えば、 printf("\n");と書くと \nという文字列を出力するのではなく改行文字が出力されますね。
このように、出力することで画面を操作できる文字コードをエスケープシーケンスと呼びます。
他にもたくさんのエスケープシーケンスがあるので、知っている範囲でご紹介します。

特殊文字

文字コード 意味 
\a ベル文字(アラート)
\b 1文字分戻る
\f ページ送り(クリア)
\n 改行、復帰
\r 同じ行の先頭に戻る
\t 水平タブ
\v 垂直タブ
  • \f\vはプリンタ出力用で、コンソール上では横方向の位置そのままで次の行に移動する場合が多いようです。
  • \b\rでカーソルの位置を戻してもそれまでの出力は消えていない点には注意する必要があります。

サンプルコード

#include <stdio.h>

int main()
{
//カーソルを行の先頭に戻す
    printf("aaaaaaaaa\rXX\n");

//カーソルを2文字分戻す
    printf("aaa\b\bX\n");
    return (0);
}
$ ./a.out
XXaaaaaaa
aXa

画面制御

文字コード  意味
\033[0J カーソル位置から画面右下まで消去
\033[1J 画面左上からカーソル位置まで消去
\033[2J 画面クリア
\033[0K カーソル位置から同じ行の右側消去
\033[1K カーソル位置から同じ行の左側消去
\033[2K カーソルのある1行の消去
\033[nA カーソルをn行上へ移動
\033[nB カーソルをn行下へ移動
\033[nC カーソルをn桁右へ移動 右端で停止
\033[nD カーソルをn桁左へ移動 左端で停止
\033[r;nH カーソルをr行、n桁目へ移動

サンプルコード

#include <stdio.h>

int main()
{
//カーソルを行の先頭に戻して右側の出力を削除
    printf("aaaaaaaaa\r\033[0KXX\n");

//カーソルを2文字分戻してその行の出力を削除
    printf("aaa\b\b\033[2KX\n");
    return (0);
}
$ ./a.out
XX
 X
#include <stdio.h>

int main()
{
//画面をクリアしてカーソルを1行目1桁目に移動
    printf("\033[2J\033[1;1H");
    return (0);
}

文字制御

文字修飾

文字コード  意味
\033[1m ハイライト(太字)
\033[4m 下線
\033[5m 点滅
\033[7m 文字色と背景色を入れ替える
\033[0m デフォルトに戻す

自分の環境(MacOS, iTerm2)では点滅はうまく動作しませんでした。

文字色

文字コード 意味
\033[30m
\033[31m
\033[32m
\033[33m 黄色
\033[34m
\033[35m マゼンダ
\033[36m シアン
\033[37m
\033[39m デフォルトに戻す

背景色

文字コード  意味
\033[40m
\033[41m
\033[42m
\033[43m
\033[44m
\033[45m マゼンダ
\033[46m シアン
\033[47m
\033[49m デフォルトに戻す
  • 色を変化させた後はデフォルトに戻すのを忘れないようにしましょう。
  • 出力結果の画像を貼るのが面倒だったのでサンプルコードはありません。

まとめ

エスケープシーケンスの動作は環境に依存する場合が多いので、その点は注意してください。
エスケープシーケンスを使ってイケてるテストを書きたいですね。

参考文献

以下のサイトを参考にしました

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11