使用可变参数的方法记录log
void foo(char *fmt, ...)
{
va_list ap;
int d;
char c, *s;
va_start(ap, fmt);
while (*fmt)
{
if(*(fmt - 1) == '%')
{
switch (*fmt)
{
case 's': /* string */
s = va_arg(ap, char *);
fprintf(fd,"%s", s);
break;
case 'd': /* int */
d = va_arg(ap, int);
fprintf(fd,"%d", d);
break;
case 'c': /* char */
/* need a cast here since va_arg only takes fully promoted types */
c = (char) va_arg(ap, int);
fprintf(fd,"%c", c);
break;
}
}
else
{
if(*fmt!='%')
fprintf(fd,"%c",*fmt);
}
fmt++;
}
va_end(ap);
}