wfmt.c

来自「unix环境下c语言屏幕编程开发」· C语言 代码 · 共 99 行

C
99
字号
#include "../inc/screen.h"/* *	金额格式输出 *	 * 例: arg->in = 1543785.23, arg->out = "  1,543,785.23". *     若 arg->in 超过 14 位数字(不包括'.'), arg->out = " ***,***,***,***.**". * */wdfmt(arg)struct	dfrec	*arg;{	char	str[16];	int	i,j;/*	double	fabs();*//*	if(fabs(arg->in) >= 100000000000000.00)	{		sprintf(arg->out," ***,***,***,***.**");		return(FALSE);	}*/	sprintf(str,"%15.2f",arg->in);	for(i = 0,j = 0;i < 16;i++,j++)	{		arg->out[19 - j] = str[15 - i];		if((i==6 || i==9 || i==12) && str[14-i]>='0' && str[14-i]<='9')		{			j++;			arg->out[19 - j] = ',';		}	}	while(j != 20)	{		arg->out[19 - j] = ' ';		j++;	}	return(TRUE);}wsfmt(arg)struct	sfrec	*arg;{	char	str[12];	int	i,j;	sprintf(str,"%11ld",arg->in);	for(i = 0,j = 0;i < 12;i++,j++)	{		arg->out[14 - j] = str[11 - i];		if(i == 2)		{			j++;			arg->out[14 - j] = '.';		}		if((i==5 || i==8) && str[10-i]>='0' && str[10-i]<='9')		{			j++;			arg->out[14 - j] = ',';		}	}	while(j != 15)	{		arg->out[14 - j] = ' ';		j++;	}	if(arg->out[12] == SP)		arg->out[12] = '0';	if(arg->out[10] == SP)		arg->out[10] = '0';	return(TRUE);}wdfmt0(arg)struct	dfrec	*arg;{	int	i;	i = 0;	wdfmt(arg);	while(i < 19 && arg->out[i] == SP)		i++;	arg->out[i-1] = '$';}wsfmt0(arg)struct	sfrec	*arg;{	int	i;	i = 0;	wsfmt(arg);	while(i < 15 && arg->out[i] == SP)		i++;	arg->out[i-1] = '$';}

⌨️ 快捷键说明

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