Ответ 1
Ваш вывод буферизуется. У вас есть 4 варианта:
-
явный флеш
fflush
после каждой записи, чтобы извлечь выгоду из буфера и по-прежнему принудительно использовать желаемое поведение/отображение.fflush( stdout );
-
имеют буфер только буферные линии-мудрый
полезно, когда вы знаете, что достаточно напечатать только полные строки
setlinebuf(stdout);
-
отключить буфер
setbuf(stdout, NULL);
-
отключить буферизацию в консоли через любое меню настроек, которое оно предоставляет
Примеры:
Вот ваш код с опцией 1:
#include <stdio.h>
int main() {
int myvariable;
printf("Enter a number:");
fflush( stdout );
scanf("%d", &myvariable);
printf("%d", myvariable);
fflush( stdout );
return 0;
}
Вот 2:
#include <stdio.h>
int main() {
int myvariable;
setlinebuf(stdout);
printf("Enter a number:");
scanf("%d", &myvariable);
printf("%d", myvariable);
return 0;
}
и 3:
#include <stdio.h>
int main() {
int myvariable;
setbuf(stdout, NULL);
printf("Enter a number:");
scanf("%d", &myvariable);
printf("%d", myvariable);
return 0;
}