📄 pub_fmtdata.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 + -