
C言語のきほん|C言語のエスケープシーケンス
見えない文字を使いこなすと、表示がぐっと整う。エスケープシーケンスでC言語の表現力を広げよう。
C言語で画面に文字を表示していると、ただ文字を並べるだけでは足りない場面がすぐに出てきます。
たとえば、改行したい、タブでそろえたい、ダブルクォーテーションそのものを表示したい、という場面です。
そんなときに使うのが エスケープシーケンス です。
エスケープシーケンスは、見た目では普通の文字列の中に書きますが、C言語の中では特別な意味を持つ記号として扱われます。
この仕組みを理解すると、printf での表示がとても扱いやすくなります。
逆にここをあいまいにしたままだと、改行されない、記号がうまく表示できない、文字列の終わり方がおかしい、といったつまずきが起きやすくなります。
ここでは、C言語のエスケープシーケンスの基本を、よく使うものを中心にやさしく整理していきます。
サンプルプログラムも、見やすい別の例に置き換えて説明するので、ひとつずつ確認しながら進めていきましょう。
エスケープシーケンスとは
エスケープシーケンスは、文字列の中で特別な文字や動作を表す書き方 です。
バックスラッシュから始まるのが特徴で、続く文字によって意味が決まります。
たとえば、次のようなものがあります。
- \n ・・・改行
- \t ・・・タブ
- \ ・・・バックスラッシュそのもの
- " ・・・ダブルクォーテーションそのもの
文字列の中では普通の文字として書けないものや、目に見えない制御文字を扱うために使います。
イメージでつかむ

よく使うエスケープシーケンス
まずは、よく使うものを表でまとめて見ておきましょう。
ここはよく使うので、少しずつ慣れていくとかなり楽になります。
| 表記 | 意味 | 説明 |
|---|---|---|
| \n | 改行 | 次の行の先頭に移動する |
| \t | タブ | 横方向の空きを入れる |
| \ | バックスラッシュ | バックスラッシュそのものを表示する |
| " | ダブルクォーテーション | ダブルクォーテーションを表示する |
| ' | シングルクォーテーション | シングルクォーテーションを表示する |
| \0 | ナル文字 | 文字列の終端を表す特別な文字 |
ここでのポイントは、見た目は2文字でも、意味としては1つの特殊な文字や動作 だということです。
特に \n と \t は、printf でとてもよく使います。
なぜそのまま書けないのか
たとえば、文字列はダブルクォーテーションで囲みますよね。
printf("こんにちは");この中でダブルクォーテーションそのものを表示したいとき、ただ " を書いてしまうと、C言語は「ここで文字列が終わった」と解釈してしまいます。
そこで、" のようにエスケープして「これは文字列の終わりではなく、文字としての " です」と伝える必要があります。
バックスラッシュも同じです。
バックスラッシュはエスケープシーケンスの開始記号なので、文字として表示したいときは \ と書きます。
まずは改行を表す \n をしっかり理解する
エスケープシーケンスの中でも、最初にしっかり覚えたいのが \n です。
これは改行を意味します。
例:
printf("1行目\n2行目\n");実行結果はこうなります。
1行目
2行目もし \n がなければ、表示はつながってしまいます。
printf を複数回使うときも、どこで改行するかは自分で指定する必要があります。
タブを表す \t の使い方
\t はタブを表します。
表のように項目を並べたいときに便利です。
例:
printf("名前\t点数\n");
printf("佐藤\t85\n");
printf("田中\t92\n");実行結果のイメージはこんな感じです。
名前 点数
佐藤 85
田中 92タブは「一定の位置まで空ける」動きなので、文字数によって見え方が少し変わることがあります。
きれいに列をそろえたい場面では、あとで学ぶ表示幅指定もよく使いますが、最初は \t で十分です。
バックスラッシュを表示する \
Windowsのパスのように、バックスラッシュを含む文字列を表示したいことがあります。
たとえば次のようなパスです。
C:\Users\Taro\DocumentsこれをC言語の文字列でそのまま書くと、\U や \D の部分がエスケープシーケンスのように解釈される可能性があり、意図通りになりません。
そのため、バックスラッシュは \ と書きます。
例:
printf("保存先: C:\\Users\\Taro\\Documents\n");ダブルクォーテーションを表示する "
文字列の中で " を表示したいときは " を使います。
これはかなりよく使います。
例:
printf("\"C言語\"の練習をしています\n");実行結果はこうなります。
"C言語"の練習をしていますシングルクォーテーションを表示する '
シングルクォーテーションも、必要ならエスケープして書けます。
例:
printf("記号の例: \'A\'\n");
実行結果
記号の例: 'A'文字列の中ではシングルクォーテーションはそのまま書ける場面も多いですが、エスケープ表記として覚えておくと安心です。
ナル文字 \0 について
\0 はナル文字で、文字列の終わりを表す特別な文字 です。
これは画面に見える文字ではありません。
C言語の文字列は、内部的には最後に \0 が付くことで終端を判断しています。
たとえば "ABC" は、内部では次のようなイメージです。
['A']['B']['C']['\0']
この \0 があるからこそ、C言語は「ここまでが文字列」と判断できます。
printf で普段意識することは少ないですが、文字列の仕組みを理解するうえでとても大事です。
サンプルプログラムでまとめて確認する
ファイル名:5_2_1.c
#include <stdio.h>
int main(void)
{
/* タブを使って項目をそろえて表示する */
printf("項目\t値\n");
printf("気温\t28\n");
/* バックスラッシュを表示する */
printf("保存先は C:\\Temp\\memo.txt です\n");
/* ダブルクォーテーションを表示する */
printf("\"エスケープシーケンス\"を練習中です\n");
/* 改行を使って空行を入れる */
printf("ここで1行空けます\n\n");
printf("次の行を表示しました\n");
return 0;
}実行結果例
項目 値
気温 28
保存先は C:\Temp\memo.txt です
"エスケープシーケンス"を練習中です
ここで1行空けます
次の行を表示しましたサンプルプログラムの見どころ
\t で見た目を整える
printf("項目\t値\n");
printf("気温\t28\n");\t を使うことで、表示を横方向にそろえやすくなります。
簡単な一覧表示を作るときに便利です。
\ でバックスラッシュを表示する
printf("保存先は C:\\Temp\\memo.txt です\n");バックスラッシュを1文字表示したいときは、コード上では \ と2つ書きます。
ここは最初に混乱しやすいですが、エスケープの開始記号だから2つ必要、と覚えるとわかりやすいです。
" で文字列中にダブルクォーテーションを入れる
printf("\"エスケープシーケンス\"を練習中です\n");文字列の開始・終了に使う記号を文字として表示したいので、" を使っています。
この書き方は説明文を表示するときによく出てきます。
\n を2回書くと空行になる
printf("ここで1行空けます\n\n");\n を2回続けると、1回改行して次の行へ、さらにもう1回改行するので、結果として空行が入ります。
表示を読みやすくしたいときによく使うテクニックです。
エスケープシーケンスの読み方に慣れるコツ
最初は、文字列の中に \ が並ぶと少し読みにくく感じるかもしれません。
そんなときは、次のように区切って読むとわかりやすいです。
たとえば、
printf("C:\\Temp\\memo.txt\n");は、頭の中でこんなふうに分けて読むと理解しやすくなります。
- C:
- \ で \ を表示
- Temp
- \ で \ を表示
- memo.txt
- \n で改行
慣れてくると、見た瞬間に意味が読めるようになります。
よくあるミスと注意点
バックスラッシュを1つだけ書いてしまう
たとえば Windows のパスをそのまま書いてしまうと、意図しないエスケープシーケンスとして解釈されることがあります。
printf("C:\Temp\memo.txt\n");このような書き方は危険です。
バックスラッシュは必ず \ と書くようにしましょう。
文字列の中の " をそのまま書いてしまう
次のように書くと、文字列が途中で終わったと解釈されてしまいます。
printf(""C言語"を学ぶ\n");ダブルクォーテーションを表示したいときは、" を使います。
printf("\"C言語\"を学ぶ\n");\n を忘れて表示がつながる
printf を何回も書いているのに、表示が1行につながってしまうのは \n の付け忘れが原因のことが多いです。
表示の見た目が変だなと思ったら、まず改行の位置を確認すると解決しやすいです。
エスケープシーケンスと文字列の学習はセットで進む
エスケープシーケンスは、printf のためだけの知識ではありません。
文字列を扱う場面全体でずっと使います。
これから先、ファイルパス、メッセージ表示、文字列処理、文字コードの学習などでも何度も出てきます。
特に次の3つは最優先で使えるようにしておくと安心です。
- \n(改行)
- \t(タブ)
- \ と "(特殊記号の表示)
このあたりに慣れてくると、表示のレイアウトを自分で整えられるようになって、コードを書くのがかなり楽しくなります。
