Я пишу программу таблицы умножения, чтобы помочь моей племяннице учиться. Я хочу, чтобы у нее было определенное количество времени, чтобы ответить на каждый вопрос (отсюда цикл for, который действует как задержка). Задержка срабатывает, как после задержка секунд выдает программы «Время вверх»! Тем не менее, программа все еще ждет ввода значения и нажмите клавишу ввода до того, как он оценит ответ и проверяет, является ли он «правильным» или «неправильным» (это не исправлено, поставив printf и scanf после цикла for вместе внутри цикла). Я знаю, что задержка просто ждет несколько секунд, а затем продолжается как обычно, поэтому мне нужно ввести номер и нажать enter. Однако я не знаю, как обойти это.Чтение значения с помощью таймера в C
В принципе, я хочу, чтобы программа автоматически «вводила», если задержка секунд прошло, и она не указала значение, в результате чего ответ был «неправильным». Но если она вводит значение и нажимает ввод до , то задержка секунд закончилась, я хочу по-прежнему проверить, является ли она «правильной» или «неправильной». Я искал другие способы сделать это, но я просто не могу понять это правильно. Это код до сих пор (опять же, я знаю, что за задержку петли только позволяет программе ждать задержку секунд, прежде чем продолжить нормально, но я не знаю, чтобы обойти это
time_t start_time = 0;
int delay = 0;
int answer = 0;
int correct = 0;
int wrong = 0;
printf("How long should the delay be?:\t");
scanf("%d", &delay);
start_time = clock();
printf("\n2 x 4 =\t");
for(;clock() - start_time <= delay*CLOCKS_PER_SEC;);
printf("\n\nTime's up!\n\n");
scanf("%d", &answer);
if(answer == 8)
{
printf("\nCorrect!\n");
++correct;
}
else if(answer != 8)
{
printf("\n\aWrong!\n");
++wrong;
}
EDIT:. Я запускать Windows и использовать CodeBlocks с mingw32.Я просто хочу, чтобы программа была простым .exe-файлом, который будет работать через CMD. (Он делает это уже, хотя).
Это сильно зависит от ОС (Windows, Linux, ...). –
Я спросил, но кто-то просто направил меня на веб-страницу с таймерами, когда я задал вопрос без кода с ним, я проверил эту веб-страницу, и это то, как далеко я пришел, но сейчас я в тупике. Я отредактирую сообщение с моей ОС и IDE и компилятором. – ThE411
Посмотрите на [этот вопрос SO] (http://stackoverflow.com/questions/19955617/win32-read-from-stdin-with-timeout), но это не прямолинейно. Вероятно, вам нужно переписать функции ввода, чтобы заменить scanf (что является хорошей идеей, так как scanf, если vey bad, если пользовательский ввод не может быть предсказан). –