#c #scanf
Вопрос:
Вот код:
#include lt;stdio.hgt; #include lt;stdlib.hgt; int main() { int age; printf("Enter your age: "); scanf("%d",amp;age); printf("You are %d years old!",age); return 0; }
Когда я запускаю код, я получаю это в выводе:
[Running] cd "c:UserskathhDocumentsCodeC" amp;amp; gcc test.c -o test amp;amp; "c:UserskathhDocumentsCodeC"test
И когда я заставляю его остановиться, я получаю это на выходе:
[Done] exited with code=1 in 6.412 seconds
Что мне делать?
Комментарии:
1. Вы запускаете его из интерактивной оболочки? Примечание: вы всегда должны проверять, что
scanf
успешно:if(scanf("%d",amp;age) == 1) printf("You are %d years old!",age);
2. Какую операционную систему и среду программирования вы используете?
3. @DavidGrayson Я использую Windows 10 и использую VS-код.
Ответ №1:
Попробуйте добавлять fflush(stdout);
сразу после каждой вызывающей строки printf
.
Комментарии:
1. Или поставьте новую строку в
printf
вызове.stdout
является буферизованной строкой.2. Спасибо за ваш отзыв, хотя он и печатает «Введите свой возраст:», он все равно не обнаруживает ввод и выдает мне код=1, когда я его останавливаю принудительно.
3. @Hextav Вы запускаете программу из интерактивной оболочки?
4. @Ted Lyngmo Я не совсем уверен, что такое интерактивная оболочка, но я использую VS-код, если в этом проблема.
5. @TedLyngmo Спасибо за ваш ответ, я понял, почему это не работает. Это было потому, что мне нужно было запустить его файл .exe в командной строке.
Ответ №2:
Код выхода 1 указывает на то, что программа завершилась неудачно. Если вы даже не получаете printf для вывода «Введите свой возраст», значит, вы каким-то образом неправильно запускаете программу, используйте и IDE, если вы новичок. Также обратите внимание, что вы должны получить userinput с помощью функции gets (), а затем преобразовать в нужный тип данных.
Комментарии:
1. Я бы предположил, что «принудительная остановка» всегда приведет к коду выхода 1.
2. Я попытался использовать функцию gets (), но у меня все еще та же проблема, что и с функцией scanf (), где она не обнаруживает ввод.