- 締切済み
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に引っかかって上手くいきません,どうすればいいでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kumonomoto
- ベストアンサー率41% (12/29)
パターンが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 ); }
- skyrandom
- ベストアンサー率0% (0/15)
aとautoを比較するからいけないのであって、一文字ずつ比較すれば良いのではないでしょうか。
お礼
ありがとうございました。無事解決できました。
- skyrandom
- ベストアンサー率0% (0/15)
あなたの「上手く」が分からないので回答しようがありません。
補足
今の処理だと que = "auto"としたときに、キーボードの「a」を押した時点で else内の文が実行されてしまうので、どうすれば間違った入力文字列のとき(例えば"auot"を入力した時点で)else内の文を実行させられるでしょうか?
お礼
ありがとうございます、無事解決できました。 自分で思いついたのが下の一気に入力に似ていました。 教えていただいた一文字ずつ判定するタイプも試したいと思います。 色々なやり方があるのだと大変勉強になりました。 ありがとうございました。またご教授下さい。