【C言語】printfで日本語の文字を表示する

この記事では、C言語のprintf関数で日本語の文字を表示する方法について解説します。

目次から探す

日本語の文字を表示する方法

プログラミング言語Cでは、文字列を表示する際にはprintf関数を使用します。

しかし、C言語ではデフォルトでASCII文字セットが使用されるため、日本語の文字をそのまま表示することはできません。

しかし、いくつかの方法を使うことで、C言語でも日本語の文字を表示することができます。

普通に表示する

まず、一番簡単な方法は、char型の配列を使用して日本語の文字列を表示する方法です。

以下のように、char型の配列に日本語の文字列を代入し、printf関数で表示します。

#include <stdio.h>
int main() {
    char message[] = "こんにちは、世界!";
    printf("%s\n", message);
    return 0;
}

このコードを実行すると、コンソールに「こんにちは、世界!」と表示されます。

ただし、注意点として、strlen関数を使用して文字列の長さを計算すると、日本語の文字数が正しく計算されないことがあります。

日本語の文字はUTF-8などのマルチバイト文字エンコーディングを使用して表現されるため、1文字が1バイトではなく、複数バイトを占めることがあるため、strlen関数では正確な文字数を取得することができません。

Unicodeエスケープシーケンスを使った表示方法

次に紹介する方法は、Unicodeエスケープシーケンスを使用して日本語の文字を表示する方法です。

Unicodeエスケープシーケンスは、文字を表すためにUnicodeコードポイントを使用する方法です。

以下のように、\uを使ってUnicodeコードポイントを指定し、printf関数で表示します。

#include <stdio.h>
int main() {
    printf("\u3053\u3093\u306B\u3061\u306F\u3001\u4E16\u754C\uFF01\n"); //こんにちは、世界!
    return 0;
}

このコードを実行すると、コンソールに日本語の文字列が表示されます。

Unicodeエスケープシーケンスを使用することで、文字列の長さを正確に計算することができます。

ワイド文字列とワイド文字リテラルの使用

最後に紹介する方法は、ワイド文字列とワイド文字リテラルを使用して日本語の文字を表示する方法です。

ワイド文字列は、wchar_t型の配列を使用して文字列を表現する方法であり、ワイド文字リテラルは、Lを接頭辞として付けた文字列リテラルです。

以下のように、ワイド文字列とワイド文字リテラルを使用して日本語の文字列を表示します。

#include <stdio.h>
int main() {
    wchar_t message[] = L"こんにちは、世界!";
    wprintf(L"%ls\n", message);
    return 0;
}

このコードを実行すると、コンソールに日本語の文字列が表示されます。

ワイド文字列を使用することで、UTF-16やUTF-32などのワイド文字エンコーディングを使用して日本語の文字を正しく表示することができます。

以上が、C言語で日本語の文字を表示する方法のいくつかです。

目次から探す