📄 my_sprintf.lst
字号:
C51 COMPILER V7.50 MY_SPRINTF 08/18/2008 12:40:46 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MY_SPRINTF
OBJECT MODULE PLACED IN ..\output\output_bin\output_mp3\my_sprintf.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\code\ap_mp3\src\my_sprintf.c LARGE OPTIMIZE(9,SIZE) BROWSE INCDIR(..\
-..\..\bsp\include;..\..\code\ap_mp3\src\include;..\..\code\global;..\..\code\include) DEFINE(CONFIG_ASIC,dynamic_load) D
-EBUG OBJECTEXTEND PRINT(..\output\output_bin\output_mp3\my_sprintf.lst) OBJECT(..\output\output_bin\output_mp3\my_sprint
-f.obj)
line level source
1 /*
2 * my_sprintf.c
3 *
4 * Simple Sprintf Function
5 *
6 * Copyright (c) FARADAY, All Right Reserved 2006
7 *
8 * Created by: K.J. Lin <kjlin@faraday-tech.com>
9 *
10 */
11 #include <stdarg.h>
12 #include <string.h>
13
14 static char order;
15
16
17
18 char *my_itoa(char *a, int val)
19 {
20 1 char buf[16];
21 1 char *ptr;
22 1 char i = 0;
23 1
24 1 memset(buf, '0', sizeof(buf));
25 1
26 1 ptr = buf;
27 1
28 1 /* zero then return */
29 1 while(val) {
30 2 *ptr++ = (val % 10) + '0';
31 2 val = val / 10;
32 2 i++;
33 2 }
34 1 //*ptr = 0;
35 1
36 1 if(i < order)
37 1 i = order;
38 1
39 1 if(i == 0)
40 1 i = 1;
41 1
42 1 while(i--)
43 1 *a++ = buf[i];
44 1
45 1 order = 0;
46 1
47 1 return a;
48 1 }
49
50 void my_sprintf(char *buf, const char *fmt, ...)
51 {
52 1 const char *s;
C51 COMPILER V7.50 MY_SPRINTF 08/18/2008 12:40:46 PAGE 2
53 1 va_list ap;
54 1
55 1 order = 0;
56 1
57 1 va_start(ap, fmt);
58 1
59 1 while(*fmt) {
60 2 if (*fmt != '%') {
61 3 *buf++ = *fmt++;
62 3 continue;
63 3 }
64 2 switch (*++fmt) {
65 3 //case 'c':
66 3 // *buf++ = va_arg(ap, char);
67 3 // break;
68 3 case 's':
69 3 s = va_arg(ap, const char *);
70 3 while(*s)
71 3 *buf++ = *s++;
72 3 break;
73 3 case '0':
74 3 if(*(fmt + 2) == 'd') {
75 4 order = *(fmt + 1) - '0';
76 4 fmt += 2;
77 4 }
78 3 else {
79 4 *buf++ = *fmt;
80 4 break;
81 4 }
82 3 case 'd':
83 3 buf = my_itoa(buf, va_arg(ap, int));
84 3 break;
85 3 default:
86 3 *buf++ = *fmt;
87 3 break;
88 3 }
89 2 fmt++;
90 2 }
91 1
92 1 *buf = '\0';
93 1
94 1 va_end(ap);
95 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 423 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1 77
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -