#include<stdio.h>
#include<stdarg.h>
#include<stdlib.h>
void Printf(char *fmt,...)//...表示可变参数(多个可变参数组成一个列表,后面有专门的指针指向他),不限定个数和类型,
{
va_list arg; //初始化指向可变参数列表的指针
va_start(arg,fmt);//将第一个可变参数的地址付给arg,即arg指向可变参数列表的开始
while( *fmt!='\0')
{
switch(*fmt)
{
case 'd':
{
int d=va_arg(arg,int);
char drr[15];
itoa(d, drr, 10); //十进制 保存
fputs(drr, stdout); //int fputs(const char *str, FILE *stream)
break;
}
case 'f':
{
double f = va_arg(arg,double);
char frr[20];
gcvt(f,10,frr);//把浮点数转换成字符串,储存在buffer中,同时返回一个指向字符串的存储位置的指针
fputs(frr, stdout);
break;
}
case 'c':
{
char c = va_arg(arg,char);
putchar(c);
break;
}
case 's':
{
char *s=va_arg(arg,char*);
fputs(s,stdout);//stdout(Standardoutput)标准输出
break;
}
default:
{
//char ch = va_arg(arg, char);
putchar(*fmt);
break;
}
}
*fmt++;
}
va_end(arg);
}
int main()
{
Printf("d\n",10086);
Printf("f\n",3.1);
Printf("c\n",'q');
Printf("s\n","mohican");
getchar();
return 0;
}
Mohican_4/9 可变参数列表 P实现rintf函数
最新推荐文章于 2018-04-22 19:45:48 发布