トップページ > 過去ログ > 記事閲覧
配列について
名前:神魔 日時: 2007/10/19 13:03

どうも、以前お世話になった神魔というものです。 以前、課題研究でDXライブラリをしようとしましたがなぜかエラーが出てしまい、使用を断念しておりましたが家では正常に動作したので家で製作しております。 形はある程度出来上がり、後は中身を作るだけ、となりましたがエラーが出るようになってしまいました。 error C2446: '==' : 'const char *' 型から 'int' 型への変換ができません。 error C2040: '==' : 'int' は 'const char [3]' と間接操作のレベルが異なります。 あと、使用している配列が出てきている部分だけ載せさせていただきます。 #include "DxLib.h" #include <string.h> #pragma warning(disable : 4267) #pragma warning(disable : 4996) void hitori(void); void aikotoba(void); char name[31],hatugen[29]; int A[29]; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode( TRUE ) ; // ウィンドウモードに変更 if( DxLib_Init() == -1 ) return -1 ; // DXライブラリ初期化処理 SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定 if(CheckHitKey(KEY_INPUT_LSHIFT)==1){ printfDx("%s>",name); KeyInputString(380,0,29,hatugen,FALSE); printfDx("%s\n",hatugen); aikotoba(); } WaitKey(); // 何かキー入力があるまで待つ DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } void aikotoba(void){ SetDrawScreen( DX_SCREEN_BACK ) ; int i; for(i=0;i<29;i++){ A[i]=hatugen[i]; } for(i=0;i<29;i++){ if(A[i]=='?'){ printfDx("柳葉魚>それは内緒のさくらんぼです。\n"); goto hell; } if(A[i]=="?"){ printfDx("柳葉魚>それは企業秘密です。\n"); goto hell; } } hell: ; for(i=0;i<29;i++){ hatugen[i]=0; A[i]=0; } }; これが問題のプログラムの一部です。 自分が入力した文字列の中からキーワードと一致する文字列があった場合、特定のコメントを表示する、といったプログラムを作ろうと考えております。 なんでも最後の if(A[i]=="?"){ のところに間違いがあるそうなんですが、'const char *'とか'const char [3]'とか言われても自分にはちんぷんかんぷんで…。 自分の知識だけでは解決できず、ネットで白調べてみたり掲示板に書き込みしたりしましたが解決策が見つからず困っております。 どうすればうまく動作するか、どなたか教えていただけると幸いです。

Page: 1 |

Re: 配列について ( No.1 )
名前:キーチック 日時:2007/10/19 14:18

""(ダブルクォーテーション)で囲んだら複数の文字列扱いなので, char型をint型の変数で取り扱う点を容認してもerrorになるのではないでしょうか. ちょっと上にある同様の処理のように''(シングルクォーテーション)で囲めば解決するのではないかと思います.
Re: 配列について ( No.2 )
名前:キーチック 日時:2007/10/19 14:20

あと,C言語でgotoを使うのはスマートではないかもしれません. whileでうまく処理できそうな気がしますよ.
Re: 配列について ( No.3 )
名前:神魔 日時:2007/10/19 18:08

キーチックさん、ありがとうございます。 早速''で囲んで実行してみました。 エラーは消えましたが全角の?を入力しても反応してくれませんでした。 どうやれば反応してくれるのでしょう? >あと,C言語でgotoを使うのはスマートではないかもしれません. whileでうまく処理できそうな気がしますよ. 確かに見づらいとは感じていました。 この問題が解決したらWhileを使って処理させてみたいと考えています。
Re: 配列について ( No.4 )
名前:千枝 日時:2007/10/19 19:58

全角は2バイトで表現しているので そのままでは比較する事が出来ません。 (つまりchar型2つ分で1文字です) 確か、比較用にstrcmpという標準関数があります。 また、直接 A[0] A[1] それぞれの値を比較するという方法もあります。 さらに、「==」が使いたいならSTLのstringがあります。 自分に合ったものを探してみてください。
Re: 配列について ( No.5 )
名前:神魔 日時:2007/10/21 13:15

千枝様、ありがとうございます!!! なんとか前進することができました。 これで作りたいプログラムはほぼ完成で、後はキーワードの種類を増やすだけとなりました。 本当にありがとうございました。

Page: 1 |