• ベストアンサー

c言語の文字取扱

cで文字を扱おうとすると char型が出てきますが文字自体はintであるとも書いてありました。 Utf8なども考えると1バイトではすまなそうなんですがなぜchar型でなんとかなっているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

char型は1バイトの文字型です。 ですので、char型のオブジェクトひとつでは、UTF-8で表現される大多数の文字を格納することができません。 たとえば、「山」という文字であれば e5 b1 b1 というコードですので、次のような配列で表現することになります。 (char[3]){ 0xe5, 0xb1, 0xb1 }

pipopipoid
質問者

お礼

3つ使うんですか cでにほんごつかうのは避けてたんですが一度検証した方が良さそうですね

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

wchar_t なんてのもあるけどねぇ.... まあいずれにしても「1文字」が何バイトかわかったもんじゃないし.

pipopipoid
質問者

お礼

どこかで定義されてはいるんですかね

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

UTF-8などの多バイト文字は、数バイトで1文字を構成することになります。 たとえば、UTF-8の漢字は通常3バイトですが、英数字などは1バイトですので、文字の種類によって構成バイト数が変わります。 結果、前から順に見ていかないと文字の境目がわかりません。

pipopipoid
質問者

お礼

char型部分についての説明がないのですが多バイト文字の最初の部分を保持しているという理解でいいですか? Char型ではポインタ演算ができない、多バイト文字を1バイトごとに処理してしまうのではないかとおもうのですが。

関連するQ&A