我可以将 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 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

数组名和指针

28.字符串的排列

我可以将 NSLog 与 Swift 结构一起使用吗?

我可以将 SPDY 与 Unicorn 一起使用吗?

003 初始化空间: 字符和字符串

我可以将反应路由器链接与 CardActionArea 一起使用吗?