蓝桥杯嵌入式——LCD字符串右对齐

蓝桥杯第三届省赛题目就涉及到了字符串的右对齐显示,代码如下。

uint8_t lcd_str[20];
uint8_t lcd_temp[20];
memset(lcd_str,0,sizeof(lcd_temp));			// 这一部分的代码是字符串右对齐显示
sprintf((char *)lcd_temp,"Total(km):%d",total_distance / 1000);
memset(lcd_str,0,sizeof(lcd_str));
sprintf((char *)lcd_str,"%20s",lcd_temp);
LCD_DisplayStringLine(Line9 ,lcd_str);

可能有人会问为什么不直接用一个lcd_str,直接把代码改为如下,

uint8_t lcd_str[20];
memset(lcd_str,0,sizeof(lcd_str));
sprintf((char *)lcd_temp,"Total(km):%d",total_distance / 1000);
sprintf((char *)lcd_str,"%20s",lcd_str);
LCD_DisplayStringLine(Line9 ,lcd_str);

我在写的时候也遇到了这个问题,经过实践发现这样是不可以的,原因没有深究,可能是因为sprintf一定要清空了才能使用吧。
所以,在以后一定要记得,每次使用sprintf一定要把目标字符串清空再使用。

Guess you like

Origin blog.csdn.net/qq_43715171/article/details/115524515
Recommended