Проблемы со сканфом - PullRequest
1 голос
/ 15 мая 2010

У меня проблемы с этим фрагментом кода:

   while(scanf("%d",&numOfPlayers)!=1){
        printf("Please enter the right number of players");    
    }

Моя цель - прочитать число у пользователя и продолжать спрашивать, пока ввод не является целым числом. Когда я запускаю этот фрагмент и, например, вводю 'r', я зацикливаюсь на бесконечном цикле. В чем может быть проблема, и как я могу ее улучшить?

Ответы [ 3 ]

3 голосов
/ 15 мая 2010

Если scanf() не может прочитать ввод, он на самом деле не читает его, поэтому он читает один и тот же ввод снова и снова в вашем примере. Вы можете отменить неправильный ввод, как это:

while(scanf("%d",&numOfPlayers)!=1){
  scanf("%s");
  printf("Please enter the right number of players\n");
}
1 голос
/ 15 мая 2010

Попробуйте найти строку в буфере, а затем выполнить поиск этой строки по вашему номеру с помощью sscanf ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...