自己实现printf函数,用...

#include




void test(const  char* i,...)
{
//循环读取
char* pChar=(char*)i;//这个指针是定位字符串的指针
char cType;
char* pNextPos=(char*)&i+4;//用这个指针指向传递参数区域的位置
while(*pChar!=0) //表示到了字符串的末尾
{
//如果不是%,则一直取到%为止
if (*pChar!='%')
{
printf("%c",*pChar);
pChar++;
}
else
{
cType=*(++pChar);
switch(cType)
{
case 'c':
case 'C':
printf("%c",*((char*)pNextPos));
//打印完毕之后,要把这个位置指针指到下一个位置
pNextPos+=4;
break;
case 'd':
case 'D':
printf("%d",*((int*)pNextPos));
//打印完毕之后,要把这个位置指针指到下一个位置
pNextPos+=4;
break;
case 'f':
case 'F':
printf("%f",*((double*)pNextPos));
//打印完毕之后,要把这个位置指针指到下一个位置
pNextPos+=8;
break;
case 's':
case 'S':
printf("%s",*((int*)pNextPos));
//打印完毕之后,要把这个位置指针指到下一个位置
pNextPos+=4;
break;


}
pChar++;
}


}
}
void main()
{
int i=1;
test("%s%f%c%d","asdfsa",1.1,'a');
}

你可能感兴趣的:(自己实现printf函数,用...)