プロが教える店舗&オフィスのセキュリティ対策術

以前ここで教えていただいた
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に引っかかって上手くいきません,どうすればいいでしょうか?
よろしくお願いします。

A 回答 (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 );
}
    • good
    • 0
この回答へのお礼

ありがとうございます、無事解決できました。
自分で思いついたのが下の一気に入力に似ていました。

教えていただいた一文字ずつ判定するタイプも試したいと思います。
色々なやり方があるのだと大変勉強になりました。
ありがとうございました。またご教授下さい。

お礼日時:2006/01/20 02:11

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/20 02:04

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

この回答への補足

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

補足日時:2006/01/19 22:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!