Objective c 验证用户输入-目标-C

Objective c 验证用户输入-目标-C,objective-c,ios4,Objective C,Ios4,我正在尝试验证用户输入。代码如下: 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); 我想改进上面的代码,这样它就不允许用户输入任何东西

我正在尝试验证用户输入。代码如下:

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); 
我想改进上面的代码,这样它就不允许用户输入任何东西(例如数字、字符串或任何负数),而只允许输入一个字符(具体来说,只允许提示中给出的选项中的一个)


当前的代码不能做到这一点

一个选择是首先把键盘读成字符串

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: {...} ;
}
您可以使用此代码。
签出即可。

签名已删除,请参考常见问题。@Sameera:删除签名的其余部分时,请随意删除“谢谢”部分。谢谢您--这太完美了。
    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);