⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_sprintf.c

📁 智原mp3 SDK 开发包 与巨力 有mp3 wma ogg decoder
💻 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 + -