我有一个标准的c函数与以下原型
extern void lcd_puts(const char *s);
Run Code Online (Sandbox Code Playgroud)
在我的其他功能中我有这样的东西
send_to_lcd() {
uint8_t count = 10
lcd_puts(count);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将count转换为字符串指针,以便能够将其发送到lcd_puts,这应该在lcd屏幕上打印出计数
谢谢
在微控制器上,你必须至少有点担心性能(排除在外sprintf),即使是这种芯片上的分区也是非常昂贵的操作.所以你想要为微控制器优化代码.
我在这里写了一些:http://ideone.com/SsEUW(需要对C风格的字符串而不是C++进行一些更改,但方法应该清楚)
这取决于lcd_puts它的论点是什么.一种可能性如下:
void send_to_lcd(uint8_t count)
{
char str[SOME_CONSERVATIVE_MAX_LENGTH];
sprintf(str, "%d", count); // You might also snprintf() if it's available
lcd_puts(str);
}
Run Code Online (Sandbox Code Playgroud)
但请记住,str一旦send_to_lcd()返回就会超出范围.因此,如果lcd_puts"记住"其输入参数,则会出现未定义的行为.
如果是这种情况,则必须malloc使用字符串缓冲区.但是,你需要free()在某个时候记住它,而且一切都变得相当混乱.