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

Visual C++ Win32 Console application printf output on multiple lines within while loop

本文关键字:输出 打印 循环 控制台 C++Win32 应用程序 while Visual      更新时间:2023-10-16

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

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

我需要的是:

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

当我使用时,数据一次又一次地填充控制台屏幕。有人能提出一个解决方案并解释为什么循环很好,代码也能工作,直到我尝试转到下一行。谢谢

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);
}

您需要一些函数才能跳到屏幕的开头。

阅读你的文档,可能有一些函数,比如gotoxy(0,0)或其他什么。

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

在打印任何之前,请尝试在循环开始时添加以下代码

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
_COORD p;
p.X = x;
p.Y = y;
SetConsoleCursorPosition(hConsole, p);

但一定要在打印后打印一些空白,这样旧打印的剩余部分就会被覆盖。