如何将变量传递给 const char 类型?
Posted
技术标签:
【中文标题】如何将变量传递给 const char 类型?【英文标题】:How to pass variable to const char type? 【发布时间】:2022-01-23 18:19:23 【问题描述】:void printLCD(int col, int row , const char *str)
for(int i=0 ; i < strlen(str) ; i++)
lcd.setCursor(col+i , row);
lcd.print(str[i]);
void loop()
lightAmount = analogRead(0);
// Here
printLCD(0, 0, printf("Light amount: %d", lightAmount ));
我是 arduino 项目的 c 语言新手。
我想在 LCD 上显示"Light Amount: 222"
。
但是printLCD
函数中的第三个参数,它只能接收字符串类型,所以出错了。
如何在上述情况下同时显示变量和字符串?
【问题讨论】:
使用 ArduinoString
类来处理字符串。哦,是的,Arduino 是用 C++ 编程的,而不是 C。
【参考方案1】:
printf
不返回字符串,它会将其打印到标准输出,大多数 Arduinos 默认情况下都没有配置。
您可以使用snprintf C 函数在 Arduino 草图中格式化字符串。
void printLCD(int col, int row , const char *str)
lcd.setCursor(col, row);
lcd.print(str);
void loop()
lightAmount = analogRead(0);
char str[17]; // for 16 positions of the LCD + terminating 0
snprintf(str, sizeof(str), "Light amount:%d", lightAmount);
printLCD(0, 0, str);
delay(100);
一些 LCD 显示库支持数字的print
函数。然后就可以了
void loop()
lightAmount = analogRead(0);
lcd.setCursor(0, 0);
lcd.print("Light amount:");
lcd.print(lightAmount);
delay(100);
【讨论】:
非常感谢!现在 LCD 打印出我想要的东西。但是,如果光传感器值改变了1023 ===> 300,最后一个数字1023,“3”并没有消失。所以LCD打印3003。如果数字从4位变为3位,最后的4位数字仍然存在。你知道为什么会发生这些吗?我可以注册这个问题吗?再次感谢:) 您可以在snprintf
调用中使用“%-4d”格式来获取一个始终占据4 个位置并且左对齐的数字。或“%4d”表示右对齐数字。另外......小心调整临时缓冲区的大小......它很容易溢出并踩到其他东西。
@aMike,不会溢出的是snprintf
噢!哦耶!它是否截断字符串并不重要,因为 16x2 显示也会将其截断。感谢指正;我要回去潜伏了! :-)以上是关于如何将变量传递给 const char 类型?的主要内容,如果未能解决你的问题,请参考以下文章
以这种格式将 argv 变量传递给 main 的结果 main( int argc, char const * argv )
我可以将 const char* 数组传递给 execv 吗?