#include <stdarg.h>
//模拟printf()函数
int print(char* formatStr,...)
{
//变参列表
va_list argPtrLs;
//将指针指向第一个参数
va_start(argPtrLs,formatStr);
int intValue;//整形值
double dbValue;//双精度值
char *strValue;//字符串
char* ptr;//参数指针
int count = 0;//格式化打印的成功个数
for(ptr=formatStr;*ptr;ptr++)
{
if(*ptr!='%')
{
putchar(*ptr);
continue;
}
switch(*++ptr)
{
case 'd':
intValue = va_arg(argPtrLs,int);
printf("%d",intValue);
count++;
break;
case 'f':
dbValue = va_arg(argPtrLs,double);
printf("%f",dbValue);
count++;
break;
case 's':
for(strValue=va_arg(argPtrLs,char*);*strValue;strValue++)
putchar(*strValue);
count++;
break;
default:
putchar(*ptr);
break;
}
}
va_end(argPtrLs);
return count;
}
C语言变参处理
最新推荐文章于 2022-01-05 18:43:46 发布