如何在执行scanf时出现第二个printf?

时间:2018-09-30 00:40:02

标签: c

我试图在用scanf键入时显示最后一个printf,但是我似乎无法理解。我很新,所以很抱歉以前是否有人问过这个问题。

#include<stdio.h>
main(){
int f;
printf("*************\n"); 
scanf("%d", &f);
printf("*************");
}

1 个答案:

答案 0 :(得分:2)

我想,您*真正*想要做的是像这样在两行星号之间进行用户输入:

*************
42
*************

如果是这样,并且您的终端了解ANSI转义序列,则可以通过以下方式实现:

#include <stdio.h>

int main(void)
{
    printf("*************\n\n*************\n\033[2A");
    int f;
    scanf("%d", &f);
}

在Windows上,可能需要将控制台模式设置为ENABLE_VIRTUAL_TERMINAL_PROCESSING

#include <windows.h>

// ...

auto output_handle = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode;
GetConsoleMode(output_handle, &mode);
SetConsoleMode(output_handle, mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);