需求:
第十五屆國賽確實有點變態,顯示部分大概有6個所以需要大量將sprintf與OLED_ShowString配合使用才能顯示相應格式的數據,所以我在想能不能簡化一下這一部分直接用寫好的printf語句將數據顯示到顯示屏上呢?
代碼:
#include <stdarg.h>
void myprintf(unsigned char address, const char* format, ...) {char ARRAY[40];// 使用va_list和va_start來處理可變參數va_list args;va_start(args, format);// 使用vsprintf將可變參數列表格式化的字符串存儲到ARRAY中vsprintf(ARRAY, format, args);// 清理可變參數列表va_end(args);// 假設OLED_ShowString函數可以在OLED屏幕上顯示字符串OLED_ShowString(address, (unsigned char*)ARRAY);
}
思路是將需要傳入的格式和數據進行整合再用OLED_ShowString函數直接輸出,這樣只需調用myprintf函數即可,其用法和printf完全一致,效果也一樣,只不過多了一個第一個參數address,其中address設置為0將數據顯示到OLED的第一行設置為2將數據顯示到第2行
...意思是可變參數,就是可以輸入多個參數
效果:
和printf函數的功能是一樣的,面對較復雜的工程重構一下OLED_ShowString成myprintf還是很高效的