プロが教える店舗&オフィスのセキュリティ対策術

char型のものを char[]型に代入したいです。

char c = 'a';
char h[1] = c;

として、

h[0] は \x97
h[1] は \x00

にしたいです。
型変換の方法を教えてください。

A 回答 (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'};

のような書き方が必要になります。
これで、お望みのデータになると思います。
    • good
    • 0
この回答へのお礼

\x97 は書き間違えと16進に直すのも忘れていました。

h[1] までを使うためには、h[2] で宣言しないと
いけなかったんですよね。よく間違えるんだけど
言われるまで気づきませんでした。

= {c}
というの書式は初めて使いました。
やりたかったことはできました。
ありがとございます。

char型のものを char *型に代入する場合も
= {c}
が使えたのはうれしかったです。

char c = 'a';
char *p = {c};

お礼日時:2001/12/09 21:32

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