首页 > 解决方案 > C在scanf之后没有printf到第二行

问题描述

scanf后如何在同一行打印?

我的代码:

int ui;

char up_from_down=179;

printf("%c",up_from_down);scanf("%d",&ui);printf("1                                              %c\n",up_from_down);

我不知道或不能很好地解释我想要的样子

所以我加了ss

现在ss:在此处输入图像描述

我希望它是:在此处输入图像描述

标签: c

解决方案


如果您的终端支持 ANSI 转义码,这会将光标向上移动一行,然后移至第 10 列,并在与ui.

#include <stdio.h>

int main()
{
    int ui;
    char up_from_down=179;

    printf("%c",up_from_down);
    scanf("%d",&ui);
    printf ( "\033[1A");//move cursor up one line
    printf ( "\033[10C");//move cursor 10 places
    printf("1                                              %c\n",up_from_down);
    return 0;
}

如果您希望打印更接近输入,请使用%n捕获处理的字符数scanf并在 ANSI 转义码中使用该值。

#include <stdio.h>

int main()
{
    int ui = 0;
    int col = 0;
    char up_from_down=179;

    printf ( "%c", up_from_down);
    fflush ( stdout);//no newline in printf so force printing
    if ( 1 == scanf ( "%d%n", &ui, &col)) {
        col += 2;
        printf ( "\033[1A");//move cursor up one line
        printf ( "\033[%dC", col);//move cursor to col
        printf("1                                              %c\n",up_from_down);
    }
    return 0;
}

推荐阅读