我正在尝试使用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);
}
答案 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);
但请确保在打印后打印一些空白区域,以便覆盖旧打印件的剩余部分。