如何将整数转换为字符串?

w_h*_*ami 3 c microcontroller

我有一个标准的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屏幕上打印出计数

谢谢

Ben*_*igt 6

在微控制器上,你必须至少有点担心性能(排除在外sprintf),即使是这种芯片上的分区也是非常昂贵的操作.所以你想要为微控制器优化代码.

我在这里写了一些:http://ideone.com/SsEUW(需要对C风格的字符串而不是C++进行一些更改,但方法应该清楚)

  • 你不一定要担心.这取决于它是否对时间至关重要.更喜欢标准库例程而不是自己滚动,直到您知道需要为止. (5认同)
  • @Oli:Owen建议的`itoa`可能是可行的,但是'sprintf`在微控制器上是一个可怕的**选择. (3认同)

Oli*_*rth 5

这取决于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()在某个时候记住它,而且一切都变得相当混乱.