• ベストアンサー

char c = 'a'; char h[1] = c; エラー

char型のものを char[]型に代入したいです。 char c = 'a'; char h[1] = c; として、 h[0] は \x97 h[1] は \x00 にしたいです。 型変換の方法を教えてください。

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

  • ベストアンサー
  • tailkuppa
  • ベストアンサー率53% (52/98)
回答No.1

とりあえず、確認を。 C では、'a'の表す値は 0x61 = 97 であって、 \x97 ではないと思います。 (\xnnn を、十六進数の意味に取りましたが、あってますでしょうか? この場合、C では通常 0xnnn のように書くと思います。) ので、 これは 0x61 のことをおっしゃっていると仮定します。 > char h[1] = c; っと、これではたぶんコンパイルが通りません。 char h[1] = {c}; のように、配列であることを明示して代入してください。 この式では、前半でh という名前の、*長さ1 の* char の配列変数を確保します。 後半で、その中を初期化しています。 添え字は 0 からはじまるので、この場合、h[0] に c の内容が代入されます。 1個しか場所を確保していないので、 h[1] の位置のデータは内容が不定です。 文字列として h を扱いたいのであれば、 C の文字列には終端として 0 が必要ですから、 char c = 'a'; char h[2] = { c, '\0'}; のような書き方が必要になります。 これで、お望みのデータになると思います。

A__
質問者

お礼

\x97 は書き間違えと16進に直すのも忘れていました。 h[1] までを使うためには、h[2] で宣言しないと いけなかったんですよね。よく間違えるんだけど 言われるまで気づきませんでした。 = {c} というの書式は初めて使いました。 やりたかったことはできました。 ありがとございます。 char型のものを char *型に代入する場合も = {c} が使えたのはうれしかったです。 char c = 'a'; char *p = {c};

関連するQ&A

専門家に質問してみよう