Когда я включаю scanf() в свой код на языке Си, он не работает

#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 (), где она не обнаруживает ввод.