dポイントプレゼントキャンペーン実施中!

C言語で全角文字を扱いたいのですが、

全角文字列を入力して特定の箇所の文字(例えば3文字目)を抜き出して、表示するという感じのプログラムをしたいのですが、うまくいきません。

半角文字ならば、配列を使ってできるのですが・・・・・

A 回答 (2件)

文字コード環境によって違います。



(1)Shift-JIS、EUC-JP
 基本的にANSI規格の8bitコード体系の上に乗ってる16bitコードなので、処理上は2バイトで1文字として扱います。
 char mojiretu[] = "テスト";
 char moji[3];
 int n = 2;
 memcpy(moji, mojiretu + (n - 1) * 2, 2);
 char moji[2] = 0;
 printf("%d番目の文字は「%s」\n", moji);
 // "2番目の文字は「ス」"と表示

(2)UTF-16の場合
 UNICODEの16bitコードです。C言語ではwchar_t等のワイド文字として扱います。
 wchar_t mojiretu[] = L"テスト";
 wchar_t moji[2];
 int n = 2;
 moji[0] = mojiretu[n - 1];
 moji[1] = L'\0';
 wprintf(L"%d番目の文字は「%s」\n", moji);
 // "2番目の文字は「ス」"と表示

(3)その他
 コードによっては1文字のサイズが固定とは限りません(例:UTF-8)
 それぞれにそれなりの処理が必要です。
    • good
    • 0
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています