實現自己的print

2021-07-09 19:26:55 字數 1685 閱讀 8648

在嵌入式開發中,常常會通過串列埠列印一些資訊到pc終端,這就需要實現自己的printf函式,下面介紹列印函式print的實現。

print.h

#ifndef     __print_h_  

#define __print_h_

void print(char* fmt, ...);

void printch(char ch);

void printdec(int dec);

void printflt(double flt);

void printbin(int bin);

void printhex(int hex);

void printstr(char* str);

#define console_print(ch) putchar(ch)

#endif /*#ifndef __print_h_*/

上面print函式為全功能的列印函式,可以實現類似printf的功能,printch實現單個字元的列印、printdec實現十進位制格式數字的列印,printflt實現浮點數的列印,printbin實現二進位制格式數字的列印,printhex實現十六進製制格式數字的列印,printstr實現字串的列印,console_print函式是串列埠單字元列印函式的巨集定義,這裡暫時用pc終端單字元列印函式putchar代替。在實際嵌入式環境下,替換成串列埠單字元列印函式即可。

print.c

#include #include #include "print.h"  

int main(void)

void print(char* fmt, ...)

pfmt++;

} else

} va_end(vp);

} void printch(char ch)

void printdec(int dec)

printdec(dec/10);

printch( (char)(dec%10 + '0'));

} void printflt(double flt)

void printstr(char* str)

} void printbin(int bin)

printbin(bin/2);

printch( (char)(bin%2 + '0'));

} void printhex(int hex)

printhex(hex/16);

if(hex < 10)

else

}

編譯執行結果如下:

print: c  

print: 1234567

print: 1234567.123456

print: string test

print: 0b1001000110100010111111111

print: 0xabcdef

print: %

如上所示,print函式實現了類似printf的功能。

Print的新用法

相信剛學python最先接觸的是print。可是print也有一些好玩的用法。先來試試普通用法 flush這個引數就更有意思了,print 函式會把內容放到記憶體中,不一定及時重新整理顯示到螢幕中。使用flush true之後,會在print結束之後,不管你有沒有達到條件,立即將記憶體中的東西顯示到...

自己實現的TransactionManager

b 背景 b color red 目前有乙個系統,系統已經寫好了,但是要不停的新增新的功能,用struts,業務邏輯寫在action中,以後可能增加一層service。業務處理和持久層沒有使用任何框架,目前是用dao擔任業務處理加持久層雙重操作,但是有些業務處理很複雜,固設計了乙個事務處理框架,大家...

實現自己的Promise polyfill

功能清單 promise.prototype.then promise.prototype.catch promise.reject promise.resolve promise.all promise.race promise.prototype.finally 參考 prmoises a 規範...