char* pStr = "haung";
int nCout= 15;
char pChar= 'Q';
printf("%s,%d,%c",pStr,nCount,pChar);
比如形式如上,实现一个自己的printf函数,能够使用格式化。
下面直接贴上自己完成的代码,仅供大家参考,如有修改之处,希望大家多多提意见。
1.头文件
#include <iostream>
using namespace std;
#include <stdarg.h>
#include <varargs.h>
2.函数体
void MyPrintf(char *pstr,...)
{
va_list ap;
char pchar1;//find %
char pchar2;//get the kind of the data which Behand of %
char* pSource = pstr;
char* pTemp = NULL;//save the getdata
va_start(ap,pstr);
while(pchar1=*pSource++)
{
if (pchar1=='%'&&(pchar2=*pSource)!='\0')
{
pSource++;
switch(pchar2)
{
case 's':
{
pTemp = va_arg(ap,char*);
fputs(pTemp,stdout);
}
break;
case 'd':
{
int nTemp = va_arg(ap,int);
char buf[100];
memset(buf,'\0',sizeof(buf));
itoa(nTemp,buf,10);//最后一个参数表示进制,10表示十进制,16表十六进制
fputs(buf,stdout);
}
break;
case 'c':
{
char cTemp = va_arg(ap,int);//为了内存对齐
putchar(cTemp);
}
break;
default:
{
putchar(pchar1);
}
break;
}
}else
{
putchar(pchar1);
}
}
va_end(ap);
}
3.调用
int main()
{
char *pStr = "huang";
int nCount = 6000;
char pchar = 'Q';
cout<<__FILE__<<"--"<<__LINE__;
MyPrintf("打印信息:MyPrint(%s,%d,%c)",pStr,nCount,pchar);
getchar();
return 0;
}
4.结果