📄 my_sprintf.c
字号:
/*
* my_sprintf.c
*
* Simple Sprintf Function
*
* Copyright (c) FARADAY, All Right Reserved 2006
*
* Created by: K.J. Lin <kjlin@faraday-tech.com>
*
*/
#include <stdarg.h>
#include <string.h>
static char order;
char *my_itoa(char *a, int val)
{
char buf[16];
char *ptr;
char i = 0;
memset(buf, '0', sizeof(buf));
ptr = buf;
/* zero then return */
while(val) {
*ptr++ = (val % 10) + '0';
val = val / 10;
i++;
}
//*ptr = 0;
if(i < order)
i = order;
if(i == 0)
i = 1;
while(i--)
*a++ = buf[i];
order = 0;
return a;
}
void my_sprintf(char *buf, const char *fmt, ...)
{
const char *s;
va_list ap;
order = 0;
va_start(ap, fmt);
while(*fmt) {
if (*fmt != '%') {
*buf++ = *fmt++;
continue;
}
switch (*++fmt) {
//case 'c':
// *buf++ = va_arg(ap, char);
// break;
case 's':
s = va_arg(ap, const char *);
while(*s)
*buf++ = *s++;
break;
case '0':
if(*(fmt + 2) == 'd') {
order = *(fmt + 1) - '0';
fmt += 2;
}
else {
*buf++ = *fmt;
break;
}
case 'd':
buf = my_itoa(buf, va_arg(ap, int));
break;
default:
*buf++ = *fmt;
break;
}
fmt++;
}
*buf = '\0';
va_end(ap);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -