Visual C ++ Win32控制台应用程序printf输出while循环中的多行

时间:2014-04-11 10:14:48

标签: c++

我正在尝试使用printf在我的控制台应用程序中的多行显示数据。以下代码显示如下数据:

Default Data=00000000 ACP Status Request=00000000 ACP VHF1 Data=00000000

我需要的是:

Default Data=00000000

ACP Status Request=00000000

ACP VHF1 Data=00000000

当我使用\ n时,数据一遍又一遍地填充控制台屏幕。任何人都可以建议一个解决方案,并解释为什么循环很好,代码工作,直到我尝试并转到下一行。谢谢。

while(!_kbhit())
{
    /*Read message records*/
    msgdefault.data = BTI429_MsgDataRd(msgdefault.addr,hCore);

    STAT_REQ.data = BTI429_MsgDataRd(STAT_REQ.addr,hCore);

    VHF1.data   = BTI429_MsgDataRd(VHF1.addr,hCore);

    /*Display values*/
    printf("\r");
    printf("Default Data=%08lX ",msgdefault.data);
    //printf("\n");
    printf("ACP Status Request=%08lX ",STAT_REQ.data);
    //printf("\n");
    printf("ACP VHF1 Data=%08lX ",VHF1.data);
}

1 个答案:

答案 0 :(得分:1)

您需要一些功能才能跳转到屏幕的开头。

阅读您的文档,可能有一些功能,如gotoxy(0,0)或其他。

尝试搜索System::Console::SetCursorPosition,这可能会对您有所帮助。

尝试在开始循环之前在循环开始时添加以下代码

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

_COORD p;
p.X = x;
p.Y = y;

SetConsoleCursorPosition(hConsole, p);

但请确保在打印后打印一些空白区域,以便覆盖旧打印件的剩余部分。