金额转大写

来源:互联网 发布:java pem space 编辑:程序博客网 时间:2024/04/30 01:23
 
// 把金额字符串转成大写int GetAmount(char *pInAmount, int nInLen, char *pOutAmount, int *pnOutLen){char *p;char szTmp[20];char str1[][3] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};char str2[][5] = {"零分", "零角", "零元", "零拾", "零佰", "零仟", "零万", "零拾", "零佰", "零仟", "零亿", "零拾"};int i;int j;int k;int nLen;         int isZero; // 前一位是0则标志置为1,否则为0p = pInAmount;for(i = 0; i < nInLen; i++) // 去掉前补0{if(p[i] != '0')break;}memset(szTmp, 0, sizeof(szTmp));memcpy(szTmp, p + i, nInLen - i);// test add// PubDisplay(3, "%s", szTmp);// endj = 0;for(i = (strlen(szTmp) - 1); i >= 0; i--){k = szTmp[i] - '0';memcpy(str2[j], str1[k], 2);j++; // str2长度}nLen = 0;    isZero = 0;for(i = (j-1); i >= 0; i--){if(memcmp(str2[i], "零", 2) != 0){            if(isZero == 1)            {                memcpy(pOutAmount + nLen, "零", 2);                nLen += 2;            }memcpy(pOutAmount + nLen, str2[i], 4);nLen += 4;            isZero = 0;}        else        {            isZero = 1;            if(memcmp(str2[i], "零元", 4) == 0)            {                memcpy(pOutAmount + nLen, "元", 2);                nLen += 2;            }            else if(memcmp(str2[i], "零万", 4) == 0)            {                memcpy(pOutAmount + nLen, "万", 2);                nLen += 2;            }            else if(memcmp(str2[i], "零亿", 4) == 0)            {                memcpy(pOutAmount + nLen, "亿", 2);                nLen += 2;            }        }}if(memcmp(pOutAmount + (nLen - 2), "角", 2) != 0 && memcmp(pOutAmount + (nLen - 2), "分", 2) != 0){memcpy(pOutAmount + nLen, "整", 2);nLen += 2;}pOutAmount[nLen] = 0;*pnOutLen = nLen;return NORMAL;}

原创粉丝点击