// ( t16.C ) // 可変引数の応用 // #include #include void PRINT( const char* fmt ... ) { va_list ap ; va_start( ap,fmt ) ; register int c ; // int c でもよい while ( c = *fmt++ ) { if ( c == '%' ) { switch( c = *fmt++ ) { case 'c': printf( "%c",va_arg( ap,int ) ) ; break ; case 'd': printf( "%d",va_arg( ap,int ) ) ; break ; case 's': printf( "%s",va_arg( ap,char* ) ) ; break ; } } else printf( "%c",c ) ; } va_end( ap ) ; } main() { PRINT( "%d %s %s\n",20,"katou","takagi" ) ; }