Проверить ввод пользователя - Objective-C - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь подтвердить ввод пользователя.Вот код:

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); 

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

Текущий код не делает этого.

Ответы [ 2 ]

1 голос
/ 28 декабря 2011
    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);

Вы можете использовать этот код. Просто проверьте это.

1 голос
/ 28 декабря 2011

Ну, один из вариантов - сначала прочитать клавиатуру как строку.

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: {...} ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...