Почему мой вывод не отображается до выхода из программы? - PullRequest
7 голосов
/ 28 июля 2010

У меня есть простая программа из книги по программированию на Си, она должна запросить два целых числа, а затем сложить их вместе и показать сумму. Я могу ввести два числа, но вывод не отображается до самого конца программы.

#include <stdlib.h>
#include <stdio.h>

/* Addition Program*/
 main()
{
      int integer1, integer2, sum;
      printf("Enter first integer\n");
      scanf("%d", &integer1);
      printf("Enter second integer\n");
      scanf("%d", &integer2);
      sum = integer1 + integer2;
      printf("Sum is %d\n", sum);
      return 0;
}

Вывод выглядит так:

2
6
Enter first integer
Enter second integer
Sum is 8

Любая помощь будет принята с благодарностью, спасибо!

Ответы [ 2 ]

8 голосов
/ 28 июля 2010

Возможно, что выход не очищается автоматически.Вы можете добавить fflush (stdout) после каждого printf () и посмотреть, поможет ли это.

Какую среду вы используете для сборки и запуска этой программы?

2 голосов
/ 28 июля 2010

В дополнение к вышесказанному, printf будет автоматически очищать свой буфер, только если достигнет новой строки.

Если вы работаете в Windows, новая строка будет \r\n вместо \n.

В качестве альтернативы вы можете сделать:

fflush(stdout);

Другой вариант - повернутьотключить буферизацию путем вызова:

setbuf(stdout, NULL);

РЕДАКТИРОВАТЬ:

Только что нашел этот похожий (но не тот же) вопрос: Почему printf не сбрасывается послеВызовите, если перевод строки находится в строке формата?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...