⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pub_fmtdata.c

📁 自已结累的Unix下C语言开发函数库
💻 C
字号:
/* *格式化的一些函数 *zyq - shilyu - cff 040901 *functionnum 003 */ #include "./../inc/pub.h"#if !defined( DEBUG )#define DEBUG#endif/* 001 *长整型数据转换为带逗号的且右对齐定长字符串  */void LongTypeToFixStr ( StrNum , NumLen , TransNum )char     *StrNum  ;    /*返回字符串*/long     NumLen   ;    /*输出长度  */long     TransNum ;    /*长整型数据*/{   char  s_TmpStr[ 100 ] ;   char  s_Format[ 100 ] ;   char  s_StrNum[ 100 ] ;   char  s_TmpNum[ 100 ] ;   int   i ;   /*init str*/   strcpy ( s_TmpStr , "" ) ;   strcpy ( s_Format , "" ) ;   strcpy ( s_StrNum , "" ) ;   strcpy ( s_TmpNum , "" ) ;   /**fmt**/   strcat ( s_Format , "%"      ) ;   sprintf( s_TmpStr , "%d" , NumLen ) ;   strcat ( s_Format , s_TmpStr );   strcat ( s_Format , "d"      ) ;   sprintf( s_StrNum , s_Format , TransNum ) ;   for ( i = 1 ; i <= NumLen ; i ++ )   {   	if ( s_StrNum[ NumLen - i ] == ' ' )   	   break ;   	sprintf( s_TmpStr , "%c" , s_StrNum[ NumLen - i ] ) ;   	strcat ( s_TmpStr , s_TmpNum ) ;   	strcpy ( s_TmpNum , s_TmpStr ) ;   	if ( i % 3 == 0 && s_StrNum[ NumLen - i - 1 ] != ' ' )   	{      	strcpy ( s_TmpStr , "," ) ;      	strcat ( s_TmpStr , s_TmpNum ) ;   	   strcpy ( s_TmpNum , s_TmpStr ) ;	   }   }   strcpy ( s_TmpStr , "" ) ;   for ( i = 1 ; i <= NumLen - strlen( s_TmpNum ) ; i ++ )   {   	strcat ( s_TmpStr , " " ) ;   }   strcat ( s_TmpStr , s_TmpNum ) ;   strcpy ( StrNum , s_TmpStr ) ;}/* 002 *浮点型数据转换为带逗号的且右对齐定长字符串  */int DoubleTypeToFixStr ( StrAmt , TotLen , DecLen , TransAmt )char     *StrAmt  ;  /*返回字符串  */long     TotLen   ;  /*输出长度    */long     DecLen   ;  /*小数点后位数*/double   TransAmt ;  /*输入double型*/{   char  s_TmpStr[ 100 ] ;      char  s_Format[ 100 ] ;   /*格式字符串*/   char  s_StrAmt[ 100 ] ;   char  s_AmtIntPart[ 100 ] ;   char  s_AmtDecPart[ 100 ] ;   char  s_TmpIntAmt [ 100 ] ;   long  IntLen ;   int   i ;   strcpy( s_TmpStr     , "" ) ;   strcpy( s_Format     , "" ) ;   strcpy( s_StrAmt     , "" ) ;   strcpy( s_AmtIntPart , "" ) ;   strcpy( s_AmtDecPart , "" ) ;   strcpy( s_TmpIntAmt  , "" ) ;      /*fmt*/   strcat ( s_Format , "%"      ) ;   sprintf( s_TmpStr , "%d" , TotLen ) ;   strcat ( s_Format , s_TmpStr );   strcat ( s_Format , "."      ) ;   sprintf( s_TmpStr , "%d" , DecLen ) ;   strcat ( s_Format , s_TmpStr );   strcat ( s_Format , "f"      ) ;   sprintf( s_StrAmt , s_Format , TransAmt ) ;   for ( i = 0 ; i < TotLen ; i ++ )   {   	if ( s_StrAmt[ i ] == '.' )   	   break ;  		sprintf( s_TmpStr , "%c" , s_StrAmt[ i ] ) ;  		strcat ( s_AmtIntPart , s_TmpStr ) ;         /*小数点前的数值部分*/   }   memcpy ( s_AmtDecPart , s_StrAmt + i , TotLen - i + 1 ) ;   IntLen = i ;   strcpy ( s_TmpIntAmt , "" ) ;   for ( i = 1 ; i <= IntLen ; i ++ )   {     if ( s_AmtIntPart[ IntLen - i ] == ' ' )        break ;     sprintf( s_TmpStr , "%c" , s_AmtIntPart[ IntLen - i ] ) ;     strcat ( s_TmpStr , s_TmpIntAmt ) ;     strcpy ( s_TmpIntAmt , s_TmpStr ) ;     if ( i % 3 == 0 && s_AmtIntPart[ IntLen - i - 1 ] != ' ' )     {        strcpy ( s_TmpStr , "," ) ;        strcat ( s_TmpStr , s_TmpIntAmt ) ;        strcpy ( s_TmpIntAmt , s_TmpStr ) ;      }   }   strcpy ( s_StrAmt , s_TmpIntAmt  ) ;   strcat ( s_StrAmt , s_AmtDecPart ) ;   strcpy ( s_TmpStr , "" ) ;   for ( i = 1 ; i <= IntLen - strlen( s_TmpIntAmt ) ; i ++ )   {   	strcat ( s_TmpStr , " " ) ;   }   strcat ( s_TmpStr , s_StrAmt ) ;   strcpy ( StrAmt , s_TmpStr ) ;}/* 003 * 功    能 : 将数字金额转换成人民币大写金额 * 输入参数 : double amount 	  要转换的金额 *	输出参数 : char *amount_caps 转换后人民币大写金额 * 返 回 值 : 无 */void ChangeAmount( double amount, char *amount_caps ){   char *caps_num  [ 10 ] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" } ;   char *money_unit[ 11 ] = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿" } ;   char amount_str [ 10 + 1 ] ;   char amount_chg [ 60 + 1 ] ;   char tmp_str    [ 6  + 1 ] ;   int  amount_num ;   int  amount_len ;   int  i ;   int  unit ;   int  is_zero ;      memset ( amount_str, 0x00, sizeof( amount_str ) ) ;   memset ( amount_chg, 0x00, sizeof( amount_chg ) ) ;      sprintf( amount_str, "%10.0f", ( amount * 100 ) ) ;   sscanf ( amount_str, "%s", amount_str ) ;   amount_len = strlen( amount_str ) ;      is_zero = 0 ;   for ( i = 0; i < amount_len; i++ )   {      unit = amount_len - 1 - i ;            memset ( tmp_str, 0x00, sizeof( tmp_str ) ) ;      amount_num = (int)amount_str[ i ] - (int)'0' ;      if ( amount_num != 0 )      {           if ( is_zero == 1 )         {            is_zero = 0 ;            strcat ( amount_chg, "零" ) ;         }         strcpy ( tmp_str, caps_num[ amount_num ] ) ;         strcat ( tmp_str, money_unit[ unit ] ) ;         strcat ( amount_chg, tmp_str ) ;      }      else      {         if ( unit == 6 )         {      	   is_zero = 0 ;            strcat ( amount_chg, "万零" ) ;         }         else if ( unit == 2 )         {            is_zero = 0 ;            strcat ( amount_chg, "元" ) ;         }         else if ( unit == 0 )         {            is_zero = 0 ;            strcat ( amount_chg, "整" ) ;         }         else         {            is_zero = 1 ;         }      }   }   strcpy ( amount_caps, amount_chg ) ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -