我正在尝试验证用户输入。这是代码:
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);
我想改进上面的代码,以便它不允许用户输入任何东西(例如数字,字符串或任何负数)但只允许输入一个字符(具体而言,只有一个选项)在提示中给出。)
目前的代码并没有这样做。
答案 0 :(得分: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: {...} ;
}
答案 1 :(得分: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);
您可以使用此代码。 看看吧。