配列について
Posted: 2007年10月12日(金) 19:11
どうも、お久しぶりです。
以前、DXライブラリが学校でうまく起動せず、一回は諦めましたが家では正常に動作したのでまたDXライブラリにお世話になっております。
課題研究では人工無脳というものを自分なりに作ってみようと思い、現在製作しております。
そのなかで、配列に格納された文字列の中からキーワードを探し、もしもキーワードと一致するものがあれば特定の文字列を出力する、というプログラムを作っております。
しかし半角文字ではうまくいくのですが、全角文字ではうまくいきません。
ポインタを使わなければいけないのかなぁ、なんて思いやってみたのですが結果は同じでした。
いくら考えても解決策が思いつかなかったので質問させていただきます。
#include "DxLib.h"
#include <string.h>
#pragma warning(disable : 4267)
#pragma warning(disable : 4996)
void hitori(void);
void aikotoba(void);
char *K;
char name[31],hatugen[40];
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,33,hatugen,FALSE);
printfDx("%s\n",hatugen);
aikotoba();
}
WaitKey(); // 何かキー入力があるまで待つ
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
void aikotoba(void){
SetDrawScreen( DX_SCREEN_BACK ) ;
K=hatugen;
while(*K != '\0'){
if(*K=='?'){
printfDx("柳葉魚>それは内緒のさくらんぼです。\n");
goto hell;
}
K++;
}
hell: ;
};
上のプログラムは現在作っているものの一部です。
このプログラムでは左のシフトキーを押し、発言権を得てから半角の"?"を入力すると"柳葉魚>それは内緒のさくらんぼです。"と出力するプログラムです。
一回配列に文字列を格納し、それをポインタ変数に渡して調べます。
これは正常に動くのですが、if(*K=='?')の''内のキーワードにあたる部分を全角文字にするとうまくいきません。
どうすれば全角文字でも反応してくれるようになるのでしょうか?
どなたか教えてください。
以前、DXライブラリが学校でうまく起動せず、一回は諦めましたが家では正常に動作したのでまたDXライブラリにお世話になっております。
課題研究では人工無脳というものを自分なりに作ってみようと思い、現在製作しております。
そのなかで、配列に格納された文字列の中からキーワードを探し、もしもキーワードと一致するものがあれば特定の文字列を出力する、というプログラムを作っております。
しかし半角文字ではうまくいくのですが、全角文字ではうまくいきません。
ポインタを使わなければいけないのかなぁ、なんて思いやってみたのですが結果は同じでした。
いくら考えても解決策が思いつかなかったので質問させていただきます。
#include "DxLib.h"
#include <string.h>
#pragma warning(disable : 4267)
#pragma warning(disable : 4996)
void hitori(void);
void aikotoba(void);
char *K;
char name[31],hatugen[40];
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,33,hatugen,FALSE);
printfDx("%s\n",hatugen);
aikotoba();
}
WaitKey(); // 何かキー入力があるまで待つ
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
void aikotoba(void){
SetDrawScreen( DX_SCREEN_BACK ) ;
K=hatugen;
while(*K != '\0'){
if(*K=='?'){
printfDx("柳葉魚>それは内緒のさくらんぼです。\n");
goto hell;
}
K++;
}
hell: ;
};
上のプログラムは現在作っているものの一部です。
このプログラムでは左のシフトキーを押し、発言権を得てから半角の"?"を入力すると"柳葉魚>それは内緒のさくらんぼです。"と出力するプログラムです。
一回配列に文字列を格納し、それをポインタ変数に渡して調べます。
これは正常に動くのですが、if(*K=='?')の''内のキーワードにあたる部分を全角文字にするとうまくいきません。
どうすれば全角文字でも反応してくれるようになるのでしょうか?
どなたか教えてください。