零“, “壹“, “贰“, “叁“, “肆“, “伍“, “陆“, “柒“, “捌“, “玖” };
char* UnitChar[] =
{ “整“, “圆“, “拾“, “佰“,”仟“, “万“, “拾“, “佰“, “仟“, “亿“,
“拾“, “佰“, “仟“, “万亿“, “拾“, “佰“, “仟“, “亿亿“,
“角“, “分“, “负“, “人民币” };
int i, j,size; //循环变量int zeroTag = 0, //0标志decZeroTag = 0;
char* pDest = dest;
char* pSrc = src;
int* pInt = feeInfo.integer;
int* pDec = feeInfo.decimal;
//初始化feeInfo.sizeInt = 0;
feeInfo.sizeDecimal = 0;
feeInfo.minus = 0;
//分析字符串while( 1 )
{
switch ( *pSrc )
{
case ‘-’ :
status = ( status == START ) ? MINUS : ERROR;
feeInfo.minus = ( status == MINUS ) ? 1 : 0;
break;
case ’1′ :
case ’2′ :
case ’3′ :
case ’4′ :
case ’5′ :
case ’6′ :
case ’7′ :
case ’8′ :
case ’9′ :
case ’0′ :
if ( *pSrc == ’0′ && status == ZEROINT )//|| status == START ) )
{
status = ERROR;
break;
}
if ( status == MINUS || status == START || status == INTEGER )
{
if ( *pSrc == ’0′ && ( status == MINUS || status == START ) )
status = ZEROINT;
else
status = INTEGER;
*pInt = (*pSrc) – 48;
++pInt;
++feeInfo.sizeInt;
}
else if ( status == DECIMAL || status == DECIMALfRACTION )
{
status = DECIMALfRACTION;
*pDec = (*pSrc) – 48;
++pDec;
++feeInfo.sizeDecimal;
}
else
{
status =ERROR;
}
break;
case ‘.’ :
status = ( status == INTEGER || status == ZEROINT )
? DECIMAL : ERROR;
break;
case ” :
status = ( status == INTEGER || status == DECIMALfRACTION
|| status == ZEROINT ) ? END : ERROR;
break;
default :
status = ERROR;
}
if ( status == END )
break;
else if ( status == ERROR )
return NULL;
++pSrc;
}
//只有1位小数时,设置百分位为0,使下面代码不需要区分这两种情况if ( feeInfo.sizeDecimal == 1 )
{
feeInfo.decimal[ 1 ] = 0;
++feeInfo.sizeDecimal;
}