【6日でできるC言語入門】書式指定と文字コード

 C言語のprintf関数は、さまざまなデータ型の値を見やすい形で出力するために「書式指定子」という記号を使います。
 また、文字や文字列を扱う場合には「文字コード」や「文字の型」にも注意が必要です。ここでは、書式指定子の使い方と、C言語における文字の取り扱いについて、わかりやすく解説します。

1.書式指定の基本

1.1. 書式指定子を使った日本語メッセージの表示

printf関数の書式指定子を使うことで、文字列・整数・実数・文字などを自在に表示できます。

プロジェクト/ファイル名: Lesson12_1/main.c

#include <stdio.h>

int main(void) {
    printf("私の好きな果物は%sです。値段は%d円です。\n", "りんご", 120);
    printf("最初の文字は%cです。\n", 'り');
    printf("%lf × %d = %lf\n", 1.5, 3, 1.5 * 3);
    return 0;
}

実行結果

私の好きな果物はりんごです。値段は120円です。
最初の文字はりです。
1.500000 × 3 = 4.500000

1.2. 主な書式指定子一覧

書式意味入れる値や式の例
%d整数値を10進数で表示10, -4, 3+7
%i整数値を10進数で表示8, 12-2
%f小数を10進数で表示2.5, 1.0+1.8
%lf倍精度小数を10進数で表示1.5, 2.0*2
%c1文字を表示'A', 'り'
%s文字列を表示"Hello", "さくら"

2.文字コードと文字データ

2.1. 文字と文字列の扱い

  • 文字(char型)
    1つの文字を表現します。
    例:char ch = 'A';
  • 文字列(char型配列)
    文字の並び(配列)で表現します。
    例:char str[] = "こんにちは";

プロジェクト/ファイル名: Lesson12_2/main.c

#include <stdio.h>

int main(void) {
    char moji = 'A';
    char str[] = "日本語のテスト";
    printf("1文字だけ表示:%c\n", moji);
    printf("文字列を表示:%s\n", str);
    return 0;
}

実行結果

1文字だけ表示:A
文字列を表示:日本語のテスト

2.2. 文字コードとは?

コンピュータは文字を数値として管理しています。
たとえば「A」はASCIIコードで「65」、「あ」はUTF-8などで複数バイトで表現されます。
日本語を扱うときは「ソースファイルの文字コード設定」にも注意しましょう。

文字ASCIIコード値備考
'A'65半角英数字
'1'49半角数字
'あ'(複数バイト)UTF-8やShift_JIS等

まとめ

 C言語のprintf関数は、書式指定子を利用することでさまざまなデータを整った形で出力できます。また、文字や文字列の扱いではchar型と文字コードを意識することが大切です。
 日本語を表示するプログラムを書くときは、ソースファイルの文字コード(UTF-8推奨)にも注意して実験してみましょう。