我有以下代码用于Arduino草图:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
static FILE lcdout = {0} ;
static int lcd_putchar(char ch, FILE* stream)
{
lcd.write(ch) ;
return (0) ;
}
void setup() {
lcd.begin(16, 2);
fdev_setup_stream (&lcdout, lcd_putchar, NULL, _FDEV_SETUP_WRITE);
}
void loop()
{
stdout = &lcdout;
printf("%.2f Volts", 2.0);
}
问题出现在代码的最后一行。这应该打印出“2.00伏特”,但实际上它打印出“?伏特”(一个问号而不是实际的浮点值)。如果我尝试格式化一个整数,那么这个方法非常好用。所以基本上,如果我用以下内容代替printf语句,则会正常工作:
printf("%d Volts", 2); //prints correctly "2 Volts"
有什么想法是什么问题吗?