现在的位置: 首页 > 综合 > 正文

Printf()函数简单实现

2017年11月08日 ⁄ 综合 ⁄ 共 808字 ⁄ 字号 评论关闭
/************************************************************************/
/* coder:huifeng00
/* 时间:2010-5-23
/* 功能:简单实现自己的printf()函数,识别%d,%s,%c
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void myprintf(const char *format, ...)
{
va_list ap;
char c,nc;

va_start(ap, format);
while (c = *format++)
{
if (c == '%'&&(nc=*format)!='/0')
{
format++;
switch(nc)
{
case 'c': //%c
{
/*为了内存对齐,所以要写int*/
char ch = va_arg(ap, int);
putchar(ch);
break;
}
case 's': //%s
{
char *p = va_arg(ap, char *);
fputs(p, stdout);
break;
}
case 'd'://%d
{
int data = va_arg(ap,int);
char buf[16];
itoa(data,buf,10);
fputs(buf,stdout);
break;
}
default:
putchar('%');
putchar(nc);
}
}
else
{
putchar(c);
}
}
va_end(ap);
}

int main(void)
{
int i = 100;
char ch ='n';
char data[] = "nihao";
myprintf("%d/n%c/n%s/n", i,ch, data);
return 0;
}

主要实现了%s,%d,%c。

抱歉!评论已关闭.