• ベストアンサー

C言語のキャスト

キーボード操作で見たい画像を切り替えるというプログラムを作成しようとしているのですがエラーが起きてしまい出来ません。 例えば、キーボードで「a」と押せばAの画像が出るように文字列にAの画像のファイル名を代入して画像を表示させようと思ったのですが、 const char [2]' から 'char' に変換できません。 この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 というエラーが出てきます。 キャストという言葉は聞いたことがあるのですが、よくわかりません。 だれか教えてください。お願いします。

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

  • ベストアンサー
  • uyama33
  • ベストアンサー率30% (137/450)
回答No.2

tex_file[0]="0"; これを tex_file[0]='0'; に変えたらどうでしょうか?

gyantz30
質問者

お礼

ありがとうございます。 "を'に直したらできました。

その他の回答 (2)

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

文字列定数を配列に直接代入することはできません。 目的からすると、#2の回答のやり方でよいかと思います。なぜそうなるのか、再度復習することをお勧めします。

gyantz30
質問者

お礼

分かりました。 もっとC++を勉強します。

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

「キャスト」の意味が知りたいのでしょうか? そうであれば、「キャスト」というのは、明示的な型変換のことです。 例えば、char*型からint型に変換するには「キャスト」を使います。 char *p = "foo"; int x = (int)p + 123; といった感じです。 reinterpret_castというのは、C++で上記のような無理やりな型変換を行うもので、C言語にはありません。 もし、キャストの意味ではなく、エラーの対処方法が知りたいのであれば、エラー発生箇所のソースコードを書き込んでください。

gyantz30
質問者

お礼

ごめんなさい。C言語ではなくC++です。間違えました。 キャストの意味は何となく分かったので、エラーの対処法を教えてください。 ソースは、 switch(sx){ case 0: tex_file[0]="0"; break; case 1: tex_file[0]="1"; break; } です。 画像のファイル名を"0_01.bmp","1_01,bmp"として、tex_file[]はchar型です。

関連するQ&A