• 締切済み

WINAPIでのキー入力した文字列の比較について

以前ここで教えていただいた wsprintf( input, "%s%c", input, (int)wp ); を使って文字列の比較判定を行ないたいのですが WM_CHAR内で wsprintf( input, "%s%c", input, (int)wp ); wsprintf( ans, "%s", input); check= strcmp(que ,input); //queはファイルからのアルファベット文字列 if(check == 0){ //正解した時の処理 } else{ 不正解だった時の処理 } としているのですが一文字入力するごとにelseに引っかかって上手くいきません,どうすればいいでしょうか? よろしくお願いします。

みんなの回答

回答No.3

パターンが2つ考えられるので2つとも書きます。 ●1文字ずつチェックする場合 //入力された文字とqueの?番目の文字と比較 if( que[strlen( input )] == (char)wp ){   //?番目の文字が同じだったので、その文字をinputに追加する   wsprintf( input, "%s%c", input, wp );   //全て入力し終わったかチェック   if( strlen( input ) == strlen( que ) ){     //正解   } } else{   //不正解 } *strlen関数は文字列の長さを返します。 ●Enterキー入力時に一気にチェック //Enterキー入力 if( wp == 13 ){   if( check = strcmp( que ,input ) == 0 ){     //正解   } else{     //不正解   } } else{   wsprintf( input, "%s%c", input, wp ); }

arukanoid
質問者

お礼

ありがとうございます、無事解決できました。 自分で思いついたのが下の一気に入力に似ていました。 教えていただいた一文字ずつ判定するタイプも試したいと思います。 色々なやり方があるのだと大変勉強になりました。 ありがとうございました。またご教授下さい。

回答No.2

aとautoを比較するからいけないのであって、一文字ずつ比較すれば良いのではないでしょうか。

arukanoid
質問者

お礼

ありがとうございました。無事解決できました。

回答No.1

あなたの「上手く」が分からないので回答しようがありません。

arukanoid
質問者

補足

今の処理だと que = "auto"としたときに、キーボードの「a」を押した時点で else内の文が実行されてしまうので、どうすれば間違った入力文字列のとき(例えば"auot"を入力した時点で)else内の文を実行させられるでしょうか?

関連するQ&A