C言語基礎|文字列とエスケープシーケンスの基本

文字列とは「文字の並び」を表すもの

C言語では、
"HELLO" や "おはようございます。" のように、
一連の文字を二重引用符 " で囲んだもの
文字列リテラル(string literal) と呼びます。

文字列リテラルは、
「この中身は文字の並びですよ」
とコンピュータに伝えるための表現です。

printf("C言語を学習中です。\n");

この例では、
C言語を学習中です。
という文字列が、そのまま画面に表示されます。

文字列リテラル入力時の注意点

文字列リテラルを入力するときに、
初心者の方が特に注意したい点があります。

注意点内容
二重引用符開始と終了の " を必ず書く
全角記号" は必ず半角で入力する
改行途中でEnterキーを押さない

末尾の " を書き忘れると、
エラーの原因になるだけでなく、どこが間違っているか分かりにくくなる
ため、特に注意しましょう。

リテラルという言葉の意味

リテラル(literal)とは、
「文字どおりの」「書かれたとおりの値」
という意味を持つ言葉です。

種類
整数リテラル10、-5
文字列リテラル"ABC"、"こんにちは"

この章では、
文字列リテラル を中心に扱っていきます。
より詳しい内容は、後の章であらためて学習します。

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

これまでに学習した \n は、
改行 を表す特別な表記でした。

このように、
\(バックスラッシュ)で始まる特別な表記
エスケープシーケンス(escape sequence)
と呼びます。

エスケープシーケンスは、
通常の文字では表しにくい動作や制御文字を、
プログラム中で指定するための仕組みです。

よく使われるエスケープシーケンス

代表的なエスケープシーケンスを表で整理してみましょう。

表記意味
\n改行
\tタブ
\バックスラッシュ
"二重引用符
\a警報(アラート)

この表は、
「見た目は2文字でも、意味は1つの動作」
であることを示しています。

警報を鳴らすエスケープシーケンス \a

\a は、
警報(アラート) を表すエスケープシーケンスです。

環境によっては、

  • ビープ音が鳴る
  • 画面が一瞬光る
  • 何も起こらない

など、動作が異なる場合があります。

サンプルプログラム:表示と警報を組み合わせる

次のプログラムは、
あいさつを表示したあとに警報を鳴らす例です。

プロジェクト名:chap1-8-1 ソースファイル名:chap1-8-1.c

// メッセージ表示と警報を行う

#include <stdio.h>

int main(void)
{
    printf("準備ができました。\a\a\n");  // 表示後に警報を2回
    return 0;
}

実行結果

準備ができました。 ♪♪

実行環境によっては、
警報音が1回にまとめて鳴ることもあります。
教材では、警報を ♪ で表現します。

エスケープシーケンスは文字列の中で使う

エスケープシーケンスは、
必ず文字列リテラルの中で使います。

printf("Hello\nWorld\n");

この場合、

Hello
World

と2行に分かれて表示されます。

文字列とエスケープシーケンスの関係

文字列リテラルは、
「表示したい文字」と
「制御のための表記」
を同時に扱えるのが特徴です。

要素役割
通常の文字そのまま表示
エスケープシーケンス改行・警報などの動作

この仕組みを理解すると、
画面表示を自由にコントロールできるようになります。

演習問題

演習 1-2

次のように表示するプログラムを作成せよ。
ただし、printf 関数の呼出しは 1回のみ とする。

(表示例)
挑戦
成長
継続

解答例

プロジェクト名:chap1-8-2 ソースファイル名:chap1-8-2.c

// 三つの言葉を縦に表示

#include <stdio.h>

int main(void)
{
    printf("挑戦\n成長\n継続\n");
    return 0;
}

演習 1-3

次のように表示するプログラムを作成せよ。
ただし、printf 関数の呼出しは 1回のみ とする。

(表示例)
おはようございます。
今日もがんばりましょう。
また明日。

解答例

プロジェクト名:chap1-8-3 ソースファイル名:chap1-8-3.c

// あいさつ文を複数行で表示

#include <stdio.h>

int main(void)
{
    printf("おはようございます。\n今日もがんばりましょう。\nまた明日。\n");
    return 0;
}

この章で大切なポイント

ポイント内容
文字列リテラル" " で囲まれた文字の並び
エスケープシーケンス\ で始まる特別な表記
\n改行
\a警報(環境依存)

すべてを一度に覚える必要はありません。
使いながら、少しずつ慣れていけば大丈夫です。