用变长参数表写的max函数,求纠正解决办法

用变长参数表写的max函数,求纠正
C/C++ code
#include<stdarg.h>
#include <stdio.h>
int main()
{
    int max(char *fmt,...);
    int a=126,b=212,c=1,d=88,e=19,f=3;
    printf("%d\n",max(a,b,c,d,e,f)); 

    return 0;
}

int max(char *fmt,...)
{
    va_list ap;
    int max_num;
    char *p;
    va_start(ap,fmt);
    max_num=*ap;
    for(p=fmt;*p;p++)
    {
        if(*p>max_num)max_num=*p; 
    }
        
        va_end(ap);
        return max_num;
         
    
}



------解决方案--------------------
C/C++ code
int max(int a,...)
{
    va_list ap;
    int max_num,temp;
    va_start(ap,a);
    temp=max_num=va_arg(ap,int);
    do 
    {
        max_num=temp>max_num?temp:max_num;
        temp=va_arg(ap,int);
    } while(temp);
    va_end(ap);
    return max_num;
}