首页 > Linux考试认证

编辑数值金额成中文金额

时间:2009-10-21 07:22:05  作者:  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
/** Function Name: edit_money* Description :编辑数值金额成中文金额* Input : char * in --输入的数值字符串** Output : char * out --输出的中文金额* Retur......

  /*

  * Function Name: edit_money

  * Description :编辑数值金额成中文金额

  * Input : char * in --输入的数值字符串

  *

  * Output : char * out --输出的中文金额

  * Return :

  */

  void

  edit_money( char * in, char * out )

  {

  char  s1[256], s2[ 10 ]; int   i, j, k, l, n, len1;

  char * p_dot;

  char  chn_digit[11][3] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; char  chn_unit1[4][3] = { "", "拾", "佰", "仟" }; char  chn_unit2[3][5] = { "万", "亿", "万亿" };

  if ( in == NULL || out == NULL )

  return;

  if ( strlen( in ) == 0 )

  return;

  memset(s1,0x00,sizeof(s1)); strncpy( s1, in, sizeof(s1) );

  /*判断是否有小数点*/

  p_dot = strchr( s1, '.' );

  if ( p_dot == NULL )

  s2[0] = 0x0;

  else

  {

  memset(s2,0x00,sizeof(s2)); strcpy( s2, p_dot 1 );

  *p_dot = 0x0;

  }

  /*

  *转换为中文

  */

  out[0] = 0x0;

  len1 = strlen( s1 );

  n = ( len1 - 1 ) / 4 1;

  l = 0;

  for ( i = 0; i < n; i )

  {

  if ( i == 0 )

  k = len1 - 4 * ( n - 1 );

  else

  k = 4;

  for ( j = 0; j < k; j , l )

  {

  if ( s1[ l ] == '0' &&

  ( ( j 1 < k && s1[ l 1 ] == '0' ) ||

  j 1 == k ) )

  continue;

  /* 100000.00显示为:壹拾万元 */ strcat( out, chn_digit[ s1[ l ] - '0' ] ); if ( s1[ l ] != '0' ) strcat( out, chn_unit1[ k - j - 1 ] );

  }

  /* 20030921 modify:(4*i -> l-k), add:(i==0) if ( i < n - 1 && memcmp( s1 4*i, "0000", k ) != 0 ) strcat( out, chn_unit2[ n - i - 2 ] );

  */

  if( ( i < n - 1 ) && \

  ( i == 0 || memcmp( s1 l-k, "0000", k ) != 0 ) ) strcat( out, chn_unit2[ n - i - 2 ] );

  }

  if ( strlen( out ) != 0 ) strcat( out, "元" );

  if ( atoi( s2 ) == 0 )

  strcat( out, "整" );

如果您需转载 编辑数值金额成中文金额,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门