2011-12-28 2 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); 

Я хочу улучшить приведенный выше код таким образом, что он не позволит пользователю вводить что-либо (например, номер, строка, или любое отрицательное число), но только один одиночный символ (в быть конкретным, только один из параметров, указанных в подсказке).

В текущем коде не делается этого.

+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: {...} ; 
}