2011-12-28 18 views
-1

ユーザー入力を検証しようとしています。ここでは、コードです:ユーザー入力を検証する - Objective-C

do{ 
     NSLog(@"Please select from the following options: D/ W/ T/ Q"); 
     res = scanf("%c", &s1); 

     if(res ==0) { 
      NSLog(@"Invalid entry."); 
     } 
    }while (res ==0); 

私はそれが(そのような数値、文字列、または任意の負の数など)の入力は何にユーザーだけ1つの文字を許可しないように上記のコード(のを改善したいです具体的には、プロンプトで指定されたオプションの1つだけ)。

現在のコードはそうしていません。

+0

署名が削除されました。よくある質問を参照してください。 –

+0

@Sameera:残りの署名を削除するときは、「ありがとう」部分を削除しても構いません。 –

答えて

1
boolean bValid = true; 
    do { 
     NSLog(@"Please select from the following options: D/ W/ T/ Q"); 
     res = scanf("%c", &s1); 

     if(res == 'D' || res == 'W' || res == 'T' || res == 'Q'){ 
      bValid = false; 
     } 
     else{ 
      //Error message 
     } 
    } while (bValid == true); 

あなたはこのコードを使用することができます。 ちょうどそれをチェックしてください。

+0

ありがとうございます - これは完璧です。 – Renu

1

まあ一つの選択肢は、最初の文字のみがあなたのケースで重要であると思われるあなたはラインを持っていたら、それは選択肢の一つであるかどうかを確認

char buffer[128]; 
fgets(buffer, sizeof(buffer), stdin); 

文字列としてキーボードを読み取ることが最初です。

switch(toupper(buffer[0])) 
{ 
    case 'D': {...} ; // do whatever u need to do 
    case 'W': {...} ; 
    case 'T': {...} ; 
    case 'Q': {...} ; 
    default: {...} ; 
}