3 for Embedded microcontrollers
\r
7 \81y
\83o
\81[
\83W
\83\87\83\93\83A
\83b
\83v
\97\9a\97ð
\81z
\r
8 0.1 :
\82Æ
\82è
\82 \82¦
\82¸
\82È
\82ñ
\82©
\93®
\82¢
\82½
\94Å
\r
9 0.2 : decimal
\82Ì0
\95\
\8e¦
\91Î
\89\9e 20050313
\r
10 0.3 : hexa decimal
\82Ì0
\95\
\8e¦
\91Î
\89\9e 20050313
\r
11 0.4 :
\83\
\81[
\83X
\92\86\82Ì
\95Ï
\82È
\83R
\81[
\83h(^M)
\82ð
\8dí
\8f\9c\82µ
\82½ 20050503
\r
12 0.5 : tsprintf
\8aÖ
\90\94\82Ì
\95Ï
\90\94 size
\82ð
\8f\89\8aú
\89»
\82·
\82é
\82æ
\82¤
\82É
\82µ
\82½ 20050503
\r
13 0.6 : %d
\82Ì
\95\89\90\94\91Î
\89\9e,%x
\82Ìunsigned
\8f\88\97\9d\89» 20050522
\r
14 0.7 : %d,%x
\82Ì
\8c\85\90\94\8ew
\92è(%[n]d)/0
\95â
\8a®
\8ew
\92è(%0[n]d)
\91Î
\89\9e 20050522
\r
15 0.8 : va_list
\82Å
\93n
\82·vtsprintf
\82ð
\8dì
\90¬
\82µ
\81Avsprintf
\82ðvtsprintf
\82Ì
\90e
\8aÖ
\90\94\82É
\82µ
\82½ 20050522
\r
16 0.9 : hex
\82Å
\81A
\92l
\82ª0
\82Ì
\8e\9e\82É
\8c\85\82ª1
\82É
\82È
\82Á
\82Ä
\82µ
\82Ü
\82¤
\83o
\83O
\8fC
\90³ 20050526
\r
17 1.0 : dec
\82Å
\81A
\92l
\82ª0
\82Ì
\8e\9e\82É
\8c\85\82ª1
\82É
\82È
\82Á
\82Ä
\82µ
\82Ü
\82¤
\83o
\83O
\8fC
\90³ 20050629
\r
19 printf
\82Ì
\8f\91\8e®
\90Ý
\92è
\82ð
\8aÈ
\88Õ
\93I
\82È
\82à
\82Ì
\82É
\82µ
\82Ä
\8eÀ
\91\95\82µ
\82Ä
\82 \82é
\82Ì
\82Å
\8eg
\97p
\8e\9e\82É
\82Í
\r
20 \90à
\96¾
\8f\91\82ð
\8am
\94F
\82µ
\82Ä
\89º
\82³
\82¢
\81B
\r
26 int tsprintf(char* ,char* , ...);
\r
27 int vtsprintf(char* buff,char* fmt,va_list arg);
\r
29 static int tsprintf_string(char* ,char* );
\r
30 static int tsprintf_char(int ,char* );
\r
31 static int tsprintf_decimal(signed long,char* ,int ,int );
\r
32 static int tsprintf_hexadecimal(unsigned long ,char* ,int ,int ,int );
\r
35 Tiny sprintf
\8aÖ
\90\94\r
37 int tsprintf(char* buff,char* fmt, ...){
\r
44 len = vtsprintf(buff,fmt,arg);
\r
50 int vtsprintf(char* buff,char* fmt,va_list arg){
\r
59 if(*fmt=='%'){ /* %
\82É
\8aÖ
\82·
\82é
\8f\88\97\9d */
\r
60 zeroflag = width = 0;
\r
67 if ((*fmt >= '0') && (*fmt <= '9')){
\r
68 width = *(fmt++) - '0';
\r
71 /* printf ("zerof = %d,width = %d\n",zeroflag,width); */
\r
74 case 'd': /* 10
\90i
\90\94 */
\r
75 size = tsprintf_decimal(va_arg(arg,signed long),buff,zeroflag,width);
\r
77 case 'x': /* 16
\90i
\90\94 0-f */
\r
78 size = tsprintf_hexadecimal(va_arg(arg,unsigned long),buff,0,zeroflag,width);
\r
80 case 'X': /* 16
\90i
\90\94 0-F */
\r
81 size = tsprintf_hexadecimal(va_arg(arg,unsigned long),buff,1,zeroflag,width);
\r
83 case 'c': /*
\83L
\83\83\83\89\83N
\83^
\81[ */
\r
84 size = tsprintf_char(va_arg(arg,int),buff);
\r
86 case 's': /* ASCIIZ
\95¶
\8e\9a\97ñ */
\r
87 size = tsprintf_string(va_arg(arg,char*),buff);
\r
89 default: /*
\83R
\83\93\83g
\83\8d\81[
\83\8b\83R
\81[
\83h
\88È
\8aO
\82Ì
\95¶
\8e\9a */
\r
90 /* %%(%
\82É
\91Î
\89\9e)
\82Í
\82±
\82±
\82Å
\91Î
\89\9e\82³
\82ê
\82é */
\r
99 *(buff++) = *(fmt++);
\r
104 *buff = '\0'; /*
\8fI
\92[
\82ð
\93ü
\82ê
\82é */
\r
114 \90\94\92l => 10
\90i
\95¶
\8e\9a\97ñ
\95Ï
\8a·
\r
116 static int tsprintf_decimal(signed long val,char* buff,int zf,int wd){
\r
119 char* ptmp = tmp + 9;
\r
123 if (!val){ /*
\8ew
\92è
\92l
\82ª0
\82Ì
\8fê
\8d\87 */
\r
127 /*
\83}
\83C
\83i
\83X
\82Ì
\92l
\82Ì
\8fê
\8d\87\82É
\82Í2
\82Ì
\95â
\90\94\82ð
\8eæ
\82é */
\r
134 /*
\83o
\83b
\83t
\83@
\83A
\83\93\83_
\81[
\83t
\83\8d\81[
\91Î
\8dô */
\r
139 *ptmp = (val % 10) + '0';
\r
147 /*
\95\84\8d\86\81A
\8c\85\8d\87\82í
\82¹
\82É
\8aÖ
\82·
\82é
\8f\88\97\9d */
\r
171 /*
\90¶
\90¬
\95¶
\8e\9a\97ñ
\82Ì
\83o
\83b
\83t
\83@
\83R
\83s
\81[ */
\r
172 for (i=0;i<len;i++){
\r
173 *(buff++) = *(++ptmp);
\r
180 \90\94\92l => 16
\90i
\95¶
\8e\9a\97ñ
\95Ï
\8a·
\r
182 static int tsprintf_hexadecimal(unsigned long val,char* buff,
\r
183 int capital,int zf,int wd){
\r
186 char* ptmp = tmp + 9;
\r
190 /* A
\81`F
\82ð
\91å
\95¶
\8e\9a\82É
\82·
\82é
\82©
\8f¬
\95¶
\8e\9a\82É
\82·
\82é
\82©
\90Ø
\82è
\91Ö
\82¦
\82é */
\r
197 if (!val){ /*
\8ew
\92è
\92l
\82ª0
\82Ì
\8fê
\8d\87 */
\r
202 /*
\83o
\83b
\83t
\83@
\83A
\83\93\83_
\81[
\83t
\83\8d\81[
\91Î
\8dô */
\r
207 *ptmp = (val % 16);
\r
209 *ptmp += str_a - 10;
\r
214 val >>= 4; /* 16
\82Å
\8a\84\82é */
\r
220 *(ptmp--) = zf ? '0' : ' ';
\r
224 for (i=0;i<len;i++){
\r
225 *(buff++) = *(++ptmp);
\r
232 \90\94\92l => 1
\95¶
\8e\9a\83L
\83\83\83\89\83N
\83^
\95Ï
\8a·
\r
234 static int tsprintf_char(int ch,char* buff){
\r
240 \90\94\92l => ASCIIZ
\95¶
\8e\9a\97ñ
\95Ï
\8a·
\r
242 static int tsprintf_string(char* str,char* buff){
\r