代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
void ShowMessage(char *,const char *,...);
int main(void)
{
ShowMessage("123.txt","%d %s %x %04X\n",100,"hello",107,107);
return 0;
}
void ShowMessage(char *name,const char *format,...)
{
union {
int a;
float b;
char *c;
}ret;
va_list arg_list;
char cmd[10]={0};
int i=0;
va_start(arg_list, format);
const char *start = format;
FILE *lfp = fopen(name,"a+");
for(;*start != '\0';start++){
if (*start == '%'){
for(i=0;;i++,start++){
cmd[i]=*start;
switch (*start){
case 's':
ret.c = va_arg(arg_list, char *);
fputs(ret.c, lfp);
break;
case 'd':
case 'u':
case 'x':
case 'X':
ret.a = va_arg(arg_list,int);
fprintf(lfp,cmd,ret.a);
break;
case 'f':
ret.b = va_arg(arg_list,int);
fprintf(lfp,cmd,ret.b);
break;
}
if(*start=='s'||*start=='d'||*start=='x'||*start=='X'||*start=='u'||*start=='f')
break;
}
memset(cmd,0,10);
}else{
putc(*start,lfp);
}
}
va_end(arg_list);
fclose(lfp);
}