char c = 'a'; char h[1] = c; エラー
char型のものを char[]型に代入したいです。
char c = 'a';
char h[1] = c;
として、
h[0] は \x97
h[1] は \x00
にしたいです。
型変換の方法を教えてください。
回答(1件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.1ベストアンサー20pt
とりあえず、確認を。
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'};
のような書き方が必要になります。
これで、お望みのデータになると思います。
この回答へのお礼
\x97 は書き間違えと16進に直すのも忘れていました。
h[1] までを使うためには、h[2] で宣言しないと
いけなかったんですよね。よく間違えるんだけど
言われるまで気づきませんでした。
= {c}
というの書式は初めて使いました。
やりたかったことはできました。
ありがとございます。
char型のものを char *型に代入する場合も
= {c}
が使えたのはうれしかったです。
char c = 'a';
char *p = {c};
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











