Это мой код [Примечание: я использую Eclipse для C / C ++ на платформе Windows]
#include <stdio.h>
#include<stdlib.h>
int main(void) {
int num;
printf("Enter a number:\n");
scanf("%d",&num);
if(num%2==0)
printf("Number is Even");
else
printf("Number is Odd");
return EXIT_SUCCESS;
}
Здесь я должен сначала ввести целое число, только после этого вызывается printf ... Я хочу сначала вызвать printf, прежде чем я введу целое число ... Что я здесь делаю не так?
Например, это результат, который я получаю
6
Enter a number:
Number is Even
И ожидаемый результат
Enter a number:
6
Number is Even
1 ответ
Вы можете вызвать fflush (stdout) после первого printf, чтобы распечатать буферизованный вывод. Но учитывая, что в будущем, если вы расширите программу дополнительным количеством printf, то добавление fflush после каждого printf будет накладными расходами. Итак, вы можете добавить
setbuf (стандартный вывод, NULL)
Непосредственно перед всеми printfs. Это гарантирует, что никакой вывод не буферизуется, и вы сразу увидите распечатки.
Похожие вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.
scanf
не возвращается или последний вызовprintf
не производит вывода?stdin/stdout
как "интерактивное устройство", оно будет полностью буферизовано. В этом случае вывод может буферизоваться до тех пор, пока не встретится вызовfflush(stdout)
(или один из ряда других вызовов функций).printf("Enter a number:\n");fflush(stdout);
printf()
не появляются, когда ожидалось?" поскольку вы не представили никаких доказательств того, что вызовы не выполняются, а только то, что вы не видите ожидаемого результата.