Программы с scanf не работают должным образом в NetBeans

Я установил NetBeans 7.0.1 сегодня. Когда я пытаюсь выполнить C-программу с «scanf» в ней, она дает странные ошибки

Вот что я написал:

программа

Он продолжает работать, пока я не нахожу что-то в выходной консоли. введите описание изображения здесь

После ввода его показаний выдает сообщение printf и показывает «RUN FAILED»

введите описание изображения здесь

Может ли кто-нибудь сказать мне, что я должен сделать, чтобы сделать это правильно?

Ваш printf не очищается, поэтому он не отображается, пока программа не закончится.

Вы не возвращаете значение из main () явно, поэтому возвращается результат scanf (), который равен 1, который интерпретируется как сбой программы.

Да, у меня с вами такая же проблема, и решения в ответах не работают на моей машине. После поиска я понимаю, что эта проблема связана с внутренней секцией / консолью Netbean. Внутренняя консоль не может запускать функцию scanf. Поэтому используйте внешний терминал для своего проекта. Сделать это:

  • сначала щелкните правой кнопкой мыши по вашему проекту и выберите свойства.
  • В этом окне выберите вкладку «Выполнить» внизу.
  • там есть «Тип консоли», измените этот тип консоли с «внутреннего терминала» на «внешний терминал».

Это все.

Вам нужно вернуть 0 в конце основного, если не предполагается, что произошла ошибка.

Вы не возвращаете 0 , что указывает на успешное завершение работы ОС, и вы не ставите трейлинг \n на свой printf , заставляя строку не печатать (stdin буферизуется):

 #include  int main() { int n; printf("Enter the number:\n"); scanf("%d", &n); return 0; } 

Программа AC без возвращаемого значения приведет к неопределенному поведению (которое единодушно считается плохим веществом ©). Компилятору разрешено свободно управлять тем, что он возвращает здесь, он, кажется, возвращает результат scanf (), но он может возвращать некоторую атмосферную энтропию для всех забот C Standard.

Что касается строки, не печатающей, это потому, что вы используете printf () на буферизованном терминале, вам нужно добавить \ n в конец. Причина этого сводится к древним способам Unix, которые уже давно забыты всеми, кроме самого сагиста гуру Unix.

Поскольку ничего не происходит, пока вы не вводите что-то, это потому, что scanf () блокируется до тех пор, пока не будет получен вход, если вы еще не знали об этом. Можно использовать неблокирующие вызовы ввода-вывода, но я не уверен, что это входит в сферу вашего вопроса. (пожалуйста, определите «сделайте это правильно»).

Добавьте код возврата. main() возвращает int, поэтому добавьте return 0; в нижней части функции main() . Прямо сейчас, возвращаемое значение – мусор, и обычно любое значение, отличное от 0, указывает на сбой.

Кроме того, вы можете подумать над тем, чтобы сделать это:

 int main(void) 

чтобы быть более явным (хотя это ничего не изменит здесь).