Почему моя маленькая игра C игнорирует первую попытку игрока? [Дубликат]

Я решил это, удалив XAMPP и установив WAMP. Спасибо за помощь.

1
задан Scientifica 9 November 2014 в 13:50
поделиться

2 ответа

scanf("%d",&age);

Когда выполнение программы достигает указанной выше строки, вы вводите целое число и нажимаете клавишу ввода. Целое число занято scanf, а символ \n (символ новой строки или Enter), который вы нажали, остается в stdin, который занят getchar(). Чтобы избавиться от него, замените ваш scanf с

scanf("%d%*c",&age);

%*c сообщает %*c сканировать символ, а затем отбрасывает его. В вашем случае %*c читает символ новой строки и отбрасывает его.

] Другим способом было бы сбросить stdin, используя следующее после scanf в вашем коде:

while ( (c = getchar()) != '\n' && c != EOF );

Обратите внимание, что c является int в приведенной выше строке

2
ответ дан Cool Guy 17 August 2018 в 14:24
поделиться
  • 1
    Спасибо за ваш ответ! Оно работает! – Scientifica 9 November 2014 в 14:02
  • 2
    @Scientifica Рассмотрите возможность его принятия, щелкнув зеленый флажок под кнопками голосования. – Filipe Gonçalves 9 November 2014 в 14:04
  • 3
    Он не становится зеленым, пока он на самом деле не щелкнет по нему. – barak manos 9 November 2014 в 14:16
  • 4
    @ FilipeGonçalves они показали мне сообщение, так что мне пришлось ждать 2 минуты. Я пошел, чтобы поесть и вернулся, чтобы щелкнуть зеленую отметку ^^ – Scientifica 9 November 2014 в 14:29

У вас возникли проблемы с получением результата, потому что вы запускаете программу из оконной среды, и окно закрывается, как только выполняются внутренние задачи. Если вы запустили скомпилированную программу из командной строки в уже существующем окне оболочки (Linux, Mac или Windows), результаты останутся на экране после того, как вы вернетесь в приглашение (если только вы не закончили выполнение четкий экран). Более того, в этом случае вам не нужен посторонний вызов getchar ().

Для Windows после открытия окна командной строки вы должны выпустить команду «cd» для изменения в каталоге который содержит скомпилированную программу, а затем введите его имя. Для Linux (и, я полагаю, Mac, поскольку Mac является UNIX под капотом), вам нужно будет ввести ./ перед именем программы после перехода в соответствующий каталог с «cd».

1
ответ дан Zeiss Ikon 17 August 2018 в 14:24
поделиться
  • 1
    Ты прав! Но пользователь не будет открывать программу, используя компилятор. – Scientifica 9 November 2014 в 14:26
  • 2
    Учитывая это очевидное раннее обучение, единственный «пользователь», скорее всего, будет программистом. Кроме того, по крайней мере, в Linux приложения с командной строкой все еще очень распространены. Прошло некоторое время с тех пор, как я использовал Windows, но я помню, что можно было создать ярлык, чтобы открыть окно, а затем сохранить его после завершения программы - упаковать такой ярлык (или инструкции для его создания) с помощью программы вероятно, будет достаточным, если бы на самом деле было выпущено текстовое приложение командной строки для ОС, отличной от Linux. – Zeiss Ikon 9 November 2014 в 14:31
  • 3
    Извините, у меня не получилось. Я новичок и не делаю никаких других ОС, кроме Windows. Не могли бы вы прояснить это, пожалуйста? – Scientifica 9 November 2014 в 14:35
  • 4
    Предполагая, что вы нажимаете на значок, чтобы запустить скомпилированную программу, вы должны иметь возможность изменять настройки значка на «держать окно открытым». или снять флажок "закрыть, когда программа завершена". или что-то подобное. – Zeiss Ikon 9 November 2014 в 23:43
  • 5
    Да, это правда. Фактически в компиляторе окно открывается. Но если я хочу предоставить файл .exe любому человеку, этот человек просто выполнит файл без какого-либо компилятора. Это правда, что это всего лишь упражнение. Но я изучаю программу и знаю, что мне понадобится сделать подобную программу. Тогда я найду эту проблему и не смогу ее исправить. Это упражнения, которые мы изучаем. – Scientifica 10 November 2014 в 12:35
Другие вопросы по тегам:

Похожие вопросы: