Отключить буферизацию на NetBeans [duplicate]

event.target - это узел, с которого произошло событие, т. е. везде, где вы размещаете прослушиватель событий (по абзацу или диапазону), event.target ссылается на узел (где пользователь нажал).

event.currentTarget, напротив, относится к узлу, на котором прослушиватель текущего события был прикреплен. То есть. если мы привязали наш прослушиватель событий к узлу абзаца, тогда event.currentTarget ссылается на абзац, а event.target все еще ссылается на span. Обратите внимание: если у нас также есть прослушиватель событий в теле, то для этого event-listener event.currentTarget относится к телу (т. Е. Событие, предоставляемое в качестве входных данных для событий-листеров, обновляется каждый раз, когда событие пузырится на один узел вверх).

6
задан Fanael 2 February 2012 в 19:30
поделиться

6 ответов

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

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

3
ответ дан antlersoft 19 August 2018 в 12:35
поделиться
  • 1
    Не так. Хотя это поведение верно на некоторых языках, оно не указано в C. Код возврата здесь не определен. В C99 есть исключение, которое позволяет опустить return 0; в main () и гарантировать, что оно все равно вернет 0, но вы не можете полагаться на это где-либо еще. – FatalError 2 February 2012 в 19:34
  • 2
    @FatalError - Вы правы, что возвращаемое значение и код выхода не определены. Были (я не знаю, есть ли еще) реализации C, где неопределенное значение будет последним результатом, вычисленным до того, как вы нажмете конец функции. – antlersoft 3 February 2012 в 01:14
  • 3
    Ах, ладно, я понимаю, что ты имеешь в виду. Сначала я думал, что вы подразумеваете, что это была особенность :). Я легко вижу, как это может произойти на практике. – FatalError 3 February 2012 в 19:38

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

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

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

0
ответ дан Chris Browne 19 August 2018 в 12:35
поделиться

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

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

int main(void)

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

-1
ответ дан FatalError 19 August 2018 в 12:35
поделиться

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

1
ответ дан Jesus Ramos 19 August 2018 в 12:35
поделиться
  • 1
    Спасибо, что работала, но моя главная проблема заключается в том, что printf не загружается, пока я не нахожу что-то в консоли. – Naresh 2 February 2012 в 19:32

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

#include <stdio.h>

int main()
{
    int n;
    printf("Enter the number:\n");
    scanf("%d", &n);
    return 0;
}
0
ответ дан Sean Bright 19 August 2018 в 12:35
поделиться

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

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

Вот и все.

8
ответ дан yasedox 19 August 2018 в 12:35
поделиться
  • 1
    Это решение сработало для меня. Бесконечно благодарен. – TheKraven 3 April 2013 в 04:00
  • 2
    Для меня это проблема, и «невозможно найти какую-либо действующую оболочку». – Saeed Rahmani 3 July 2016 в 13:03
Другие вопросы по тегам:

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