0001 void append ( char*& rpn, float opnd ) { //将操作数接至RPN末尾 0002 char buf[64]; 0003 if ( opnd != ( float ) ( int ) opnd ) sprintf ( buf, "%.2f \0", opnd ); //浮点格式,或 0004 else sprintf ( buf, "%d \0", ( int ) opnd ); //整数格式 0005 rpn = ( char* ) realloc ( rpn, sizeof ( char ) * ( strlen( rpn ) + strlen ( buf ) + 1 ) ); //扩展空间 0006 strcat ( rpn, buf ); //RPN加长 0007 } 0008 0009 void append ( char*& rpn, char optr ) { //将运算符接至RPN末尾 0010 int n = strlen ( rpn ); //RPN当前长度(以'\0'结尾,长度n + 1) 0011 rpn = ( char* ) realloc ( rpn, sizeof ( char ) * ( n + 3 ) ); //扩展空间 0012 sprintf ( rpn + n, "%c ", optr ); rpn[n + 2] = '\0'; //接入指定的运算符 0013 }