Я относительно новичок в C, но я программировал уже несколько лет.scanf вызывает бесконечный цикл в C
Я пишу программу для колледжа, и я смущен, почему функция scanf ниже не вызывается, что приводит к бесконечному циклу.
Я пробовал иметь свой scanf вне функции, называя его дважды, один раз изнутри, один раз из и несколько других способов. Я читал онлайн, что fflush может помочь, но у него нет
Любые предложения?
// store starting variables
int players;
// print title
printf("*------------------------------------*\n");
printf("| |\n");
printf("| Wheel |\n");
printf("| of |\n");
printf("| Fortune |\n");
printf("| |\n");
printf("*------------------------------------*\n");
printf("\n\nHow many players are there?: ");
while(scanf("%d", &players) != 1 && players >= 0) {
printf("That isn't a valid number of players. Try again: ");
fflush(stdin);
}
EDIT JUST ПОНЯЛ Я забыл упомянуть кое-что. Эта программа отлично работает при вводе фактического числа. Я хочу, чтобы это было безопасно, если пользователь вводит что-то, что не является строкой, это не приведет к бесконечной петле программы.
Не 'fflush (STDIN)'. – Olaf
логика выглядит неправильно ... вы имели в виду 'while (scanf ("% d ", & players)! = 1 || players <= 0) {' (цикл, если либо 'scanf()' терпит неудачу, либо нет игроков)? Кроме того, 'fflush (stdin)' не очищает входной поток на всех платформах, поэтому убедитесь, что он работает на вашем, прежде чем полагаться на него. – Dmitri