这些参数是不定量的。我怎么接收他

解决方案 »

  1.   

    BOOL
    printx( char *fmt, ... )
    {
        va_list ap;
        int d;
        char c;
        char *s;
        //char buf[ 50 ];
        //char g_buf[ 200 ];
        //memset( g_buf, 0, 200 );    va_start( ap, fmt );
        while( *fmt )
        {
            switch( *fmt )
            {
            case '\%':
                fmt++;
                switch( *fmt )
                {
                case 's':   /* string */
                    s = va_arg( ap, char * );
                    printf( "%s", s );
                    //sprintf( buf, "%s", s );
                    //strcat( g_buf, buf );
                    break;
                case 'd':   /* int */
                    d = va_arg( ap, int );
                    printf( "%d", d );
                    //sprintf( buf, "%d", d );
                    //strcat( g_buf, buf );
                    break;
                case 'u':   /* int */
                    d = va_arg( ap, int );
                    printf( "%u", d );
                    //sprintf( buf, "%u", d );
                    //strcat( g_buf, buf );
                    break;
                case 'x':   /* hex */
                    d = va_arg( ap, int );
                    printf( "%x", d );
                    //sprintf( buf, "%x", d );
                    //strcat( g_buf, buf );
                    break;
                case 'c':   /* char */
                    c = ( char )va_arg( ap, int );
                    printf( "%c", c );
                    //sprintf( buf, "%c", c );
                    //strcat( g_buf, buf );
                    break;
                case '\%':
                    printf( "%c", '\%' );
                    //sprintf( buf, "%c", *fmt );
                    //strcat( g_buf, buf );
                    break;
                default:
                    printf( "%c", *fmt );
                    //sprintf( buf, "%c", *fmt );
                    //strcat( g_buf, buf );
                    break;
                }
                break;
            default:
                printf( "%c", *fmt );
                //sprintf( buf, "%c", *fmt );
                //strcat( g_buf, buf );
                break;
            }
            fmt++;
        }
        va_end( ap );
        //printf( "\n%s", g_buf );
        //setbkgnd( ( unsigned char * )g_buf );
        return TRUE;
    }
      

  2.   

    声明如下
    BOOL printx( char *fmt, ... );
      

  3.   

    看一下MFC源程序CString::Format函数的实现就知道了,