// 把金额字符串转成大写
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,否则为0
p = 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);
// end
j = 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;
}金额转大写
最新推荐文章于 2024-12-11 11:17:43 发布
850

被折叠的 条评论
为什么被折叠?



