我可以将 printf 与 PSTR 一起使用吗?
Posted
技术标签:
【中文标题】我可以将 printf 与 PSTR 一起使用吗?【英文标题】:Is it possible for me to use printf with PSTR? 【发布时间】:2019-10-14 10:53:34 【问题描述】:我正在尝试用 C 语言构建一个可以在 puTTY 上打印并由微控制器控制的游戏。所以基本上要打印东西,我有一个名为move_cursor
的函数可以到达我想要打印的地方,然后我使用PSTR来打印它。
//to move
void move_cursor(int x, int y)
printf_P(PSTR("\x1b[%d;%dH"), y, x);
//to print things
printf_P(PSTR("Score: "));
当我需要打印诸如“游戏结束”之类的东西时,对我来说相当简单,但我意识到当我需要打印不断更新的东西时,它会有点困难,比如分数。我尝试使用printf
,因为我有一个名为score
的变量,我可以加入它。但它似乎不适用于PSTR。如果我想在终端上打印一些经常更新的东西,我该怎么办?
【问题讨论】:
efundies.com/avr-and-printf 我不确定你到底在问什么?只需使用printf_P(PSTR("Score: %u"), currentScore);
?
@Rev1.0 是的,我想我想多了。 Printf 工作得很好。
【参考方案1】:
您可以使用以下方法替换左角的文本:
#define gotoxy(x, y) printf("\033[%d;%dH", x, y)
在主函数之上。比使用:
gotoxy(0, 0);
printf("%d",/*Some number*/);
到左边的角落打印你的分数。
【讨论】:
使用子程序代替宏可能会更好。因为现在完整的printf
代码将出现在您使用此宏的任何地方,这会浪费空间。在大型程序中,这可能是一个问题,因为程序内存被证明是一种宝贵的资源!另外我认为 PSTR() 仍然需要,因为您希望这些字符串驻留在程序内存中。以上是关于我可以将 printf 与 PSTR 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章